HOJ-1011 / POJ-1589

WA了半天。

有如下可能错误:

  每一行的最后是否都是直接换行而没有多余的空格(用N = 17试试)

  用62/max_length而不是60

不明白为什么有人TLE,RE难道是自己写的排序太渣了?。。。那为什么想不开非要自己写排序

这个转置的输出方式真是纠结了我好久,尤其是那些该不该打的空格。

第i行,第j列的字符串是第i+j*y个(y是最终应输出的行数)(数组从0~n-1)

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 using namespace std;
 6 
 7 string a[200];
 8 
 9 int main(void)
10 {
11   int n, m;
12   int x, y;
13   int maxn;
14   int p = 0;
15   while(cin>>n){
16     printf("------------------------------------------------------------\n");
17     for(int i = 0; i < n; ++i) cin>>a[i];
18     sort(a, a+n);
19     maxn = 0;
20     for(int i = 0; i < n; ++i)
21       if(maxn < a[i].length())
22     maxn = a[i].length();
23     x = 62/(maxn+2);
24     y = n / x;
25     if(n % x) y++;
26     for(int i = 0; i < y; ++i){
27       for(int j = 0; j < x; ++j){
28     m = i+j*y;
29     if(m >= n) break;
30     else{
31       cout<<a[m];
32       if(m + y < n)
33         for(int k = 0; k < maxn+2-a[m].length(); ++k) cout<<' ';
34     }
35       }
36       cout<<endl;
37     }
38   }
39   return 0;
40 }

 

posted on 2015-11-22 23:45  AlanXue  阅读(139)  评论(0编辑  收藏  举报

导航