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 }
时间: 2024-10-10 02:32:39