您的位置:首页 > 其它

xynuoj 2906 单词排序

2018-03-31 18:55 190 查看

2906: 单词排序

时间限制: 1 Sec  内存限制: 128 MB
提交: 9  解决: 6
[提交][状态][讨论版]

题目描述

大三的小明为了准备研究生考试,决定从今天开始背英语单词,但是单词太多了,为了偷懒,他决定把所有要背的单词从短到长排好序,这样他就可以从易到难的开始背了。若两个单词长度相等,将单词从第一个字母,按从a~z排列。

输入

测试数据有多组,每组数据第一行是一个整数n(1<=n<=50),接下来是n行,每行有一个全部为小写字母的单词,单词的长度i为1<=i<=12。

输出

每组测试数据,每行一个单词,输出按照要求排好序的单词。保证没有相同的单词

样例输入

5
a
animal
bee
bit
how

样例输出

a
bee
bit
how
animal
提示当时这是考试时候的一道水题,但是我们队没A出来,唉,比较水,死在了return strcmp(x.str,y.str)<0;这句上,当时不知道这个怎么用,emmmm,还在冒泡#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Node{
char str[15];
int len;
}a[60];
int cmp(Node x,Node y){
if(x.len!=y.len)
return x.len<y.len;
else
return strcmp(x.str,y.str)<0;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
scanf("%s",a[i].str);
a[i].len=strlen(a[i].str);
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++){
printf("%s\n",a[i].str);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: