UVA 400 Unix ls
水题一枚。。先进行字典序排序。。然后找出最大长度串,利用这个最大长度求出行列数,然后按题目要求输出即可
1A 水过
#include <algorithm>
using namespace std;
#include <stdio.h>
#include <string.h>
int cmp(const void *a, const void *b)
{
return (strcmp((char*)a, (char*)b));
}
int n;
char name[105][105];
int maxx;
int main()
{
while (scanf("%d", &n) != EOF)
{
maxx = 0;
memset(name, 0, sizeof(name));
getchar();
for (int i = 0; i < n; i ++)
{
scanf("%s", name[i]);
if (maxx < strlen(name[i]))
maxx = strlen(name[i]);
}
qsort(name, n, sizeof(name[0]), cmp);
int lie = (60 - maxx) / (maxx + 2) + 1;
int hang = (n - 1) / lie + 1;
printf("------------------------------------------------------------\n");
for (int i = 0; i < hang; i ++)
{
for (int j = 0; j < lie; j ++)
{
printf("%s", name[i + j * hang]);
if (j != lie - 1 && i * (lie) + j + 1 != n)
{
for (int k = 0; k < maxx - strlen(name[i + j * hang]) + 2; k ++)
{
printf(" ");
}
}
}
printf("\n");
}
}
return 0;
}