Hello World for U

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 <cstdlib>
 2 #include <iostream>
 3 #include <cstdio>
 4 #include <cmath>
 5 #include <cstring>
 6 #include <cctype>
 7 #include <string>
 8 #include <algorithm>
 9 #include <queue>
10 #include <stack>
11 #include <set>
12 #include <map>
13 #include <vector>
14 
15 
16 using namespace std;
17 
18 int main(int argc, char *argv[])
19 {
20     
21     
22     char s[1000];
23     
24     gets(s);
25     
26     int len=strlen(s);
27     
28     int n1,n2,n3;
29     
30     for(n2=1;n2<=len;n2++)
31     {
32                           int ans=len-n2;
33                           if(ans%2==0)
34                           {
35                                       n1=n3=ans/2;
36                                       if(n1<=(n2+2))
37                                       break;
38                           }
39     }
40     
41     
42     int i,j;
43     
44     for(i=0;i<n1-1;i++)
45     {
46                       printf("%c",s[i]);
47                       
48                       for(j=1;j<=n2;j++)
49                       {printf(" ");}
50                       printf("%c\n",s[len-i-1]);
51     }
52     
53     
54     for(j=1;j<=n2+2;j++)
55     {
56                       printf("%c",s[i]);
57                       i++;
58     }
59     
60     puts("");
61     
62                                         
63     
64     
65     
66     
67    // system("PAUSE");
68     return EXIT_SUCCESS;
69 }

 

posted @ 2012-05-30 21:30  cseriscser  阅读(311)  评论(0编辑  收藏  举报