1754:字符串数组排序问题(4.1算法之排序和算法性能)
来源:互联网 发布:淘宝虚拟现实vr购物 编辑:程序博客网 时间:2024/06/05 03:27
1754:字符串数组排序问题
总时间限制: 1000ms 内存限制: 65536kB
描述
给定一组字符串,按指定的排序方式输出这些字符串。排序可是自然顺序(inc)、自然逆序(dec)、忽略大小写顺序(ncinc)、忽略大小写逆序(ncdec)等。
输入
输入有多行,第一行为一个表明排序方式的字符串见题面,第二行为字符串的数目。
其余各行每行一个字符串,字符串中间可能空格,前后也可能有空格,但前后的空格要忽略。
输出
输出也有多行,按指定的顺序输出输入的字符串。
样例输入
ncdec
3
Hello World!
You’re right!
haha! you’re wrong!
样例输出
You’re right!
Hello World!
haha! you’re wrong!
#include<iostream>#include<string.h>#include<algorithm>using namespace std;//http://noi.openjudge.cn/ch0401/1754///讲真,感觉写的很垃圾,没想到char的二维数组在sort里面没法直接用//所以又改成了struct类型的,cmp写了两个方法,一个大小写敏感,一个忽略大小写//输入的获取也是费了不少劲,反正写的不好 struct str{ char s[10000];};int n;char a[10],b,x[10000][10000],tmp;str y[10000];bool cmp(str c,str d){ int len=min(strlen(c.s),strlen(d.s)); for(int i=0;i<len;i++){ if(c.s[i]!=d.s[i]){ return c.s[i]<d.s[i]; } } return strlen(c.s)<strlen(d.s);}bool cmp2(str c,str d){ int len=min(strlen(c.s),strlen(d.s)); for(int i=0;i<len;i++){ if(tolower(c.s[i])!=tolower(d.s[i])){ return tolower(c.s[i])<tolower(d.s[i]); } } return strlen(c.s)<strlen(d.s);}int main(){ cin>>a>>n>>b; cin.putback(b); for(int i=0;i<n;i++){ cin.getline(x[i],100000); int l=0,r=strlen(x[i])-1,k=0; while(x[i][l]==' '){ l++; } while(x[i][r]==' '){ r--; } for(int j=l;j<=r;j++){ y[i].s[k++]=x[i][j]; } y[i].s[k]='\0'; } switch(a[0]){ case 'i': sort(y,y+n,cmp); for(int i=0;i<n;i++) cout<<y[i].s<<endl; break; case 'd': sort(y,y+n,cmp); for(int i=n-1;i>=0;i--) cout<<y[i].s<<endl; break; case 'n': sort(y,y+n,cmp2); if(a[2]=='i'){ for(int i=0;i<n;i++) cout<<y[i].s<<endl; } else{ for(int i=n-1;i>=0;i--) cout<<y[i].s<<endl; } break; }}
别人写的,用的string数组,简单了一逼,原来string数组可以用sort,欲哭无泪!
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;string p;int n;inline char bian(char c){if(c<='Z'&&c>='A')return c+'a'-'A';else return c;}bool cmp(string a,string b){for(int i=0;i<300;i++){if(bian(a[i])<bian(b[i]))return true;if(bian(a[i])>bian(b[i]))return false;}}string a[50];int main(){cin>>p>>n;for(int i=0;i<=n;i++)getline(cin,a[i]);if(p=="inc"){sort(a+1,a+n+1);for(int i=1;i<=n;i++)cout<<a[i]<<endl;//system("pause");return 0;}if(p=="dec"){sort(a+1,a+n+1);for(int i=n;i>=1;i--)cout<<a[i]<<endl;//system("pause");return 0;}sort(a+1,a+n+1,cmp);if(p=="ncinc"){for(int i=1;i<=n;i++)cout<<a[i]<<endl;//system("pause");return 0;}for(int i=n;i>=1;i--)cout<<a[i]<<endl;//system("pause");return 0;}
阅读全文
0 0
- 1754:字符串数组排序问题(4.1算法之排序和算法性能)
- 1999:日志排序(4.1算法之排序和算法性能)
- 排序算法的性能问题
- 算法之排序问题
- 数据结构和算法分析之排序算法--交换排序篇(冒泡排序和快速排序)
- 【算法之常用排序算法(二)】常用排序算法性能比较,及常见面试题
- 手动排序算法和数组交换算法
- LUA 排序算法和性能分析[2]:冒泡排序算法
- LUA 排序算法和性能分析[3]:选择排序算法
- LUA 排序算法和性能分析[4]:快速排序算法
- LUA 排序算法和性能分析[5]:插入排序算法
- LUA 排序算法和性能分析[6]:归并排序算法
- 【VB.NET】字符串数组长度排序算法
- 数组排序问题的两种方法:插入排序算法和递归(分治)算法
- 数组排序算法(冒泡排序、倒排序、反转排序)
- 排序算法之归并排序算法和基数排序算法
- 数组的选择排序算法和冒泡排序算法
- 数组排序问题(数字字符串排序)
- 记录我的caffe2 vs2017安装过程
- CSU 1101: 报数游戏(水题)
- 【Spring】Spring MVC原理及配置详解
- 区块链解读2
- 2257: [Jsoi2009]瓶子和燃料
- 1754:字符串数组排序问题(4.1算法之排序和算法性能)
- Shiro授权详细解析
- Android打造流畅九宫格抽奖
- MapReduce运行模式-本地模式配置
- 将大数据写入数据库
- Shiro几大拦截器
- 关于闭包
- bzoj 1552: [Cerc2007]robotic sort && bzoj 3506: [Cqoi2014]排序机械臂(splay区间翻转)
- html5手机网站需要加的那些meta标签,手机网站自适应