美丽的字符正方形FINAL

输入一个长度不超过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的输出结果为‘’,虽然输出的样式相同,但是不是同一个字符。

原文地址:https://www.cnblogs.com/wzzdeblog/p/10615324.html