UVA 400 Unix ls

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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值