注意处理最后一列
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#include<set>
#include<vector>
#include<map>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int n,m,p;
string fileName[101];
while(scanf("%d",&n)!=EOF)
{
int maxLen=0;
for(int i=0,len;i<n;i++){
cin>>fileName[i];
len=fileName[i].length();
maxLen=(maxLen<len?len:maxLen);
}
cout<<"------------------------------------------------------------"<<endl;
sort(fileName,fileName+n);
m=(60-maxLen)/(maxLen+2)+1;//列数
p=(n+m-1)/m;//行数
//printf("%d %d %d\n",p,m,maxLen);
for(int i=0;i<p;i++){
for(int j=0;j<m;j++){
int index = i+j*p;
if(index<n){
cout<<fileName[index];
for(int k=fileName[index].length();k<maxLen;k++)
cout<<" ";
if(j==m-1)
cout<<endl;
else
cout<<" ";
}
else{
cout<<endl;
break;
}
}
}
}
return 0;
}