#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<map>
#include<vector>
#include<cmath>
using namespace std;
struct node
{
char s[70];
}name[105];
bool cmp(const node& a,const node& b)
{
return strcmp(a.s,b.s)<0;
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
scanf("%s",name[i].s);
int maxl=0;
sort(name,name+n,cmp);
for(int i=0;i<n;i++)
{
int len=strlen(name[i].s);
if(maxl<len) maxl=len;
}
printf("------------------------------------------------------------\n");
int col=62/(maxl+2); //设每一行都是最长的+2,所以列数即为62/(maxl+2);
int row=ceil(n*1.0/col); //向上取整 还可以写成 row=(n-1)/col+1; 两者等价。
int cnt=0;
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
int c=i+j*row;
if(c<n&&j<col-1) //c必须小于n
{
printf("%s",name[c].s);
for(int k=strlen(name[c].s);k<maxl+2;k++)
printf(" ");
}
else if(c<n)
printf("%s",name[c].s);
}
printf("\n");
}
}
return 0;
}
UVA 400 (UNIX ls) (字符串模拟)
最新推荐文章于 2022-05-05 18:35:56 发布