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

  

posted @ 2018-09-30 15:31  古城独钓  阅读(118)  评论(0编辑  收藏  举报