UVA - 400 Unix ls qsort的用法
来源:互联网 发布:九品网络电视安卓版 编辑:程序博客网 时间:2024/05/08 21:13
题目大意:给出N个文件名,要求你按升序排序输出,按列升序,所每行最多只能输出60个字符,每个文件名的宽度为最长文件名的长度+2(除了最长的文件名以外)
解题思路:因为每个文件名的宽度都为最长的文件名加2,因为最长的文件名的长度比其他的宽度少了2,所以每行的最多输出有62,所以每行最多能有C = 62/(max_len + 2)个单词,现在要求有多少行,当每行都能满的情况,就有R = N / C,不满的情况R = N / C + 1,总结起来R = (N-1) / C + 1
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define maxn 70#define maxm 110char str[maxm][maxn];int N;int cmp(const void *p1,const void *p2) {return strcmp((char *) p1,(char *)p2);}int main() {char temp[100];int cnt = 0;int max_len;while(gets(temp)) {sscanf(temp,"%d",&N);max_len = 0;for(; cnt < N; cnt++) {gets(str[cnt]);int temp = strlen(str[cnt]);max_len = max(temp,max_len);}qsort(str,N,sizeof(str[0]),cmp);printf("------------------------------------------------------------\n");int C = 62 / (max_len+2);int R = (N - 1) / C + 1;for(int i = 0; i < R; i++) {for(int j = 0; j < C; j++) {if(j * R + i >= N)break;elseprintf("%s",str[j * R + i]);int len = max_len - strlen(str[ j * R + i]);for(int k = 0; k < len; k++)printf(" ");if(j != C - 1)printf(" ");}printf("\n");}cnt = 0;}return 0;}
0 0
- UVA - 400 Unix ls qsort的用法
- UVa 400 - Unix ls
- uva 400 Unix ls
- UVA 400 - Unix ls
- uva 400 - Unix ls
- uva-400-Unix ls
- UVa 400 - Unix ls
- UVA 400 Unix ls
- UVa 400 - Unix ls
- uva 400 - Unix ls
- UVa - 400 - Unix ls
- uva 400 Unix ls
- UVa 400 - Unix ls
- UVa 400 - Unix ls
- UVa:400 - Unix ls
- UVa 400 - Unix ls
- UVA - 400 Unix ls
- Uva 400 Unix ls
- Ignatius and the Princess IV
- 部分和问题
- 【剑指Offer面试编程题】题目1516:调整数组顺序使奇数位于偶数前面--九度OJ
- Memcached技术
- 从高中生活步入大学生活
- UVA - 400 Unix ls qsort的用法
- RStudio中制作R包
- ndk-stack使用
- vs2013中配置OpengGL的编程环境
- curl与file_get_contents的比较
- 通过导航显示列表
- Matlab 提取网页信息保存到Excel(正则表达式)
- theano 安装
- RMAN恢复脚本