UVA 400 - Unix ls
2011-11-30 11:01
344 查看
题目大意:给你给定个数的文件名,按字典序排序之后输出,如果输出是在最后一列,输出长度为输入长度的最大长度,否则输出长度为输入长度的最大长度+2。输出时一行最多只能输出60个字符。按列输出,第一列输完之后输第二列,一直到最后一列。
思路:输入存2维数组,用qsort按字典序排序度找出输入的最长字符串长度,计算每行最多能输入多少个字符串即输出时每行会有几列,再计算要输出多少行。最后按输出格式输出就可以了。
总结:输出格式有点麻烦,别的就没什么了!
代码:
思路:输入存2维数组,用qsort按字典序排序度找出输入的最长字符串长度,计算每行最多能输入多少个字符串即输出时每行会有几列,再计算要输出多少行。最后按输出格式输出就可以了。
总结:输出格式有点麻烦,别的就没什么了!
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <cstdlib> using namespace std; char str[110][70]; int cmp(const void *_a, const void *_b) { char *a = (char *)_a; char *b = (char *)_b; return strcmp(a, b); } int main() { int t; while (scanf("%d", &t) != EOF) { memset(str, 0, sizeof(str)); int len = 0; for (int i = 0; i < t; i++) { scanf("%s", str[i]); if (len < strlen(str[i])) len = strlen(str[i]); } for (int i = 0; i < t; i++) { for (int j = 0; j < len; j++) { if (str[i][j] == '\0') { for (int k = j; k < len; k++) str[i][k] = ' '; str[i][len] = '\0'; } } } for (int i = 0; i < 60; i++) printf("-"); printf("\n"); qsort(str, t, sizeof(str[0]), cmp); int cl = 0; int l = len; while (l <= 60) { l = l + len + 2; cl ++; } int r = 0; if (t % cl == 0) r = t / cl; else r = t / cl + 1; for (int i = 0; i < r; i++) { for (int j = 0; j < cl - 1; j++) { printf("%s ", str[j * r + i]); } printf("%s\n", str[r * (cl - 1) + i]); } } return 0; }
相关文章推荐
- UVa 400 Unix的ls命令
- UVa 400 Unix ls (字符串排序&规格化输出)
- uva-400-Unix ls
- UVA400 Unix ls
- UVA - 400 Unix ls qsort的用法
- UVA-400 Unix ls
- Uva 400 Unix ls
- [UVA400]Unix ls[格式输出]
- UVA - 400 Unix ls
- UVA 400 Unix ls
- UVA 400 - Unix ls(排版题)
- UVA 400 (暑假-排序、检索(2)-F- Unix ls)
- #UVA 400 Unix ls (string + sort( ) )
- UVa 400 - Unix ls
- uva 400 unix ls(字符数据处理)
- UVA - 400 Unix ls
- Unix ls UVA - 400
- 【例题5-8 UVA - 400】Unix ls
- UVa-400 Unix ls
- UVa——400Unix ls(字典序文本处理输出iomanip)