輸入一個長度不超過50的由小字字母構成的字符串,輸出由這個字符序列構成的最大的正方形。
輸入格式:
由小寫字母構成的一個字符串。
輸出格式:
將字符串圍成最大可能的正方形輸出,字符串從正方形的左上方開始,按順時針方向繞行。
輸入樣例1:
a
輸出樣例1:
a
輸入樣例2:
happy
輸出樣例2:
ha
pp
輸入樣例3:
abcdefghijklmn
輸出樣例3:
abcd
l e
k f
jihg
(摘自pintia.cn)
解答:
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main() 5 { 6 string str; //輸入的字符串 7 int side,row(1); //side是邊長,row是第幾行 8 cin>>str; //輸入字符串 9 side=str.length()/4+1; //計算邊長 10 for(int i(0);i<side;i++) //輸出第一行,長度為side 11 cout<<str[i]; 12 if(side>1) //如果行數大於1 13 { 14 cout<<endl; 15 for(;row<side-1;row++) //輸出剩余side-2行,不包括最后一行 16 { 17 cout<<str[(side-1)*4-row]; 18 for(int k(0);k<side-2;k++) 19 cout<<' '; 20 cout<<str[(side-1)+row]<<endl; 21 } 22 for(int i(0);i<side;i++) //輸出最后一行 23 cout<<str[(side-1)*3-i]; 24 } 25 return 0; 26 }
解析:
見代碼注釋。
std::ends和‘ ’的輸出不同,std::ends的輸出結果為‘\0’,雖然輸出的樣式相同,但是不是同一個字符。