HOJ 1011 UNIX ls
一道暴力题
最难的是如何读懂题(用百度)
对字符串进行排序
然后输出就行了
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; char s[105][65]; inline bool cmp(char a[65],char b[65]){ // puts(a);puts(b); for(int i=0;i<60;i++){ if(a[i]<b[i]) return 1; if(a[i]>b[i]) return 0; } return 0; } int n; inline void sort(){ for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) if(!cmp(s[i],s[j])) swap(s[i],s[j]); } int id[105]; int main(){ while(scanf("%d",&n)!=EOF){ puts("------------------------------------------------------------"); for(int i=0;i<n;i++) scanf("%s",s[i]); int max_len=0; for(int i=0;i<n;i++) max_len=max(max_len,(int)strlen(s[i])); sort(); int num=(60-max_len)/(max_len+2)+1; int cnt=num; if(n%num==0) num=n/num; else num=n/num+1; // puts(s[2]); // cout<<cmp(s[0],s[2])<<endl; for(int i=0;i<num;i++) for(int j=i;j<n;j+=num){ int len=strlen(s[j]); for(int k=0;k<len;k++) putchar(s[j][k]); if((j-i)/num==cnt){ for(int k=len;k<max_len;k++) putchar(' '); puts(""); continue; } for(int k=len;k<max_len+2;k++) putchar(' '); if((j+num)>=n) puts(""); } } return 0; }