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;
}

浙公网安备 33010602011771号