紫书章五例题八 命令 UVA 400 (排序+结构体)
来源:互联网 发布:同花顺炒股软件收费 编辑:程序博客网 时间:2024/05/21 17:26
题意:将一些字符串按照字典从左到右,从上到下输出,假设最长的字符串长度为M,则最后一列为M个字符,其它列为M+2个字符。
这个题我用了一个结构体。然后就出现了一个存字符串的数组,为什么呢,因为如果声明一个二维数组的话,那么排序就不好用了。如果用set存的话,之后查找的话,就比较麻烦。
#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <cmath>#include <vector>#include <set>using namespace std;struct node{ char s[65];};node f[105];int vis[105];//里面存对应字符串的长度,避免重复计算bool cmp(node a,node b){ return strcmp(a.s,b.s)<0;}int main(){ int n; while(scanf("%d",&n)!=EOF) { int MAX=0,wz=0; memset(f,0,sizeof(f)); memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) { scanf("%s",f[i].s); int len=strlen(f[i].s); if(MAX<strlen(f[i].s)) MAX=strlen(f[i].s); } sort(f,f+n,cmp); int c=(60-MAX)/(MAX+2)+1; int r=(n+c-1)/c; int total=1,flag=0,h=0; for(int i=0;i<n;i++) vis[i]=strlen(f[i].s); printf("------------------------------------------------------------\n"); for(int i=0;i<r;i++){ for(int j=0;j<c;j++){//输出,按行输出 int k=j*r+i; cout<<f[k].s; int g=vis[k]; int cd=MAX+2; if(j==c-1) cd=cd-2;//最后一列MAX while(g<cd) {printf(" ");g++;} } printf("\n"); } } return 0;}
0 0
- 紫书章五例题八 命令 UVA 400 (排序+结构体)
- 例题:给任务排序(UVa 10305)
- 例题5-8 UVA 400 Unix Is命令
- 指南第三章 例题八 UVA 11235 Frequent values(RMQ问题)
- 紫书章六例题八 UVA 548 (中序后序建树,前序遍历求值)
- 结构体指针例题(一)
- 结构体指针例题(二)
- 结构体指针例题(三)
- uva 10194 Football (字符结构体排序)
- UVA-11134-Fabled Rooks (结构体排序+贪心)
- UVa 10763 - Foreign Exchange(结构体排序)
- 例题6-15 给任务排序 UVA 10305(拓扑排序)
- 紫书章六例题15 给任务排序 UVA 10305(拓扑排序)
- 例题:四分树(UVa 297)
- 例题:油田(UVa 572)
- 例题:除法(UVa 725)
- 紫书章五例题五 集合栈计算机 UVA 12096(stack)
- 紫书章五例题六 团队队列 uva 540(queue)
- NYOJ79拦截导弹
- L1-023. 输出GPLT
- 已知网络地址在协调器中查询MAC地址
- 设计模式—Decorator Pattern
- L1-024. 后天
- 紫书章五例题八 命令 UVA 400 (排序+结构体)
- L1-025. 正整数A+B
- 20170404_请画出OSI七层模型和TCP/IP的五层模型
- 《Clean Code》--软件开发的《断舍离》
- python : 书签 转换成 html
- [GIT] warning: LF will be replaced by CRLF问题解决方法
- L1-026. I Love GPLT
- 序列化和反序列化
- 博弈论-斐波那契博弈