Hello World for U (20)

Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, "helloworld" can be printed as:

h  d

e  l

l  r

lowo

 That is, the characters must be printed in the original order, starting top-down from the left vertical line with n1 characters, then left to right along the bottom line with n2 characters, and finally bottom-up along the vertical line with n3 characters. And more, we would like U to be as squared as possible -- that is, it must be satisfied that n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } with n1 + n2 + n3 - 2 = N.

 

 Input Specification:

 

Each input file contains one test case. Each case contains one string with no less than 5 and no more than 80 characters in a line. The string contains no white space.

 

 Output Specification:

 

For each test case, print the input string in the shape of U as specified in the description.

Sample Input:helloworld!

 Sample Output:

h   !

e   d

l   l

lowor

 

 

  1 #include <iostream>

  2 

  3 #include <string>

  4 

  5 using namespace std;

  6 

  7  

  8 

  9 int main()

 10 

 11 {

 12 

 13  

 14 

 15       string ss;

 16 

 17       while(cin>>ss)

 18 

 19       {

 20 

 21          int x,y;

 22 

 23        bool u=false;

 24 

 25          for(x=ss.length();x>=1;x--)

 26 

 27          {

 28 

 29              if(x<3)

 30 

 31                {

 32 

 33                      for(y=3;y<=ss.length();y++)

 34 

 35                            if(2*x+y-2==ss.length())

 36 

 37                            {

 38 

 39                               u=true;

 40 

 41                                 break;

 42 

 43                            }

 44 

 45                }

 46 

 47                   else

 48 

 49                   {

 50 

 51                         for(y=x;y<=ss.length();y++)

 52 

 53                            if(2*x+y-2==ss.length())

 54 

 55                            {

 56 

 57                               u=true;

 58 

 59                                 break;

 60 

 61                            }

 62 

 63  

 64 

 65                   }

 66 

 67               if(u)  break;

 68 

 69  

 70 

 71          }

 72 

 73  

 74 

 75  

 76 

 77          int i=0;int j=ss.length()-1;int k;

 78 

 79        int tem=x-1;

 80 

 81          while(tem--)

 82 

 83          {

 84 

 85             cout<<ss[i++];

 86 

 87               for(k=0;k<y-2;k++)  cout<<" ";

 88 

 89           cout<<ss[j--];

 90 

 91               cout<<endl;

 92 

 93          }

 94 

 95  

 96 

 97          for(k=i;k<=j;k++)

 98 

 99                cout<<ss[k];

100 

101          cout<<endl;

102 

103       }

104 

105   return 0;

106 

107 }
View Code

 

你可能感兴趣的:(Hello world)