您的位置:首页 > 其它

UVA 400 - Unix ls

2017-09-06 09:26 357 查看
题目大意:输入一些单词,排序,每列为最大单词长度+2。最后一列为最大单词长度。每行不能超过60个字符。尽可能少行。可能说的不太清楚。看不懂的话,翻译给的应该更清楚一些。



解题思路,排序,把要输出的行列求出来,注意空格输出就ok了。

ac代码:
#include <iostream>
#include <algorithm>
#include <string> 
#include <math.h>
using namespace std;

int main()
{
int n, max, len, rang; 
string a[3000];
while(scanf("%d", &n)!=EOF){
getchar();
max = 0;
for (int i=0; i<n; i++){
cin >> a[i];
if (max < a[i].size())
max = a[i].size(); 
}
len = (60-max) / (max+2) + 1;
sort(a, a+n);
rang = ceil(n*1.0/len);
for (int i=0; i<60; i++)
printf("-");
printf("\n");
for (int i=0; i<rang; i++){
for (int j=i, count=0; j<n && count<len; j+=rang,count++){
cout << a[j];
for (int k=a[j].size(); k<max+2; k++)
cout << " ";
}
cout << endl;
}
}
return 0;
 } 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: