//int col=(atr-M)/(M+2)+1,row=(T-1)/col+1;//n个元素的二维数组计算行列数
#include<iostream>
#include<cstdio>
#include<sstream>
#include<cctype>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<deque>
using namespace std;
const int maxn=105;
string p[maxn];
int atr=60;
void print(const string& s,int a,char chr){
cout<<s;
int len=a-s.size();
for(int i=0;i<len;i++)
printf("%c",chr);
}
int main(){
int T;
while(cin>>T){
int M=0;
for(int i=0;i<T;i++){
cin>>p[i];
M=max(M,(int)p[i].length());
}
sort(p,p+T);
//列数计算公式 (T-K)/M+1
int col=(atr-M)/(M+2)+1,row=(T-1)/col+1;//n个元素的二维数组计算行列数
print("",60,'-');//打印60个-
printf("\n");
for(int r=0;r<row;r++){//p存储被打印字符,二重遍历打出矩阵
for(int c=0;c<col;c++){
int pos=c*row+r;
if(pos<T)
print(p[pos],c==col-1?M:M+2,' ');
}
printf("\n");
}
}
return 0;
}
UVA - 400
最新推荐文章于 2021-08-23 10:32:32 发布