2780 ZZWYYQWZHZ
题目描述 Description
可爱的小管在玩吹泡泡。忽然,他想到了一种排序。。。。。。。
输入描述 Input Description
第一行输入n,表示有n个数。(n>=20)
以下n行输入n个数,表示要排序的数(数字长度不超过200)。
输出描述 Output Description
有n行,即这些数从小到大的排序。
样例输入 Sample Input
5
1
2
3
4
5
样例输出 Sample Output
1
2
3
4
5
数据范围及提示 Data Size & Hint
n<=50
每个数字长度不超过200.
对输入的数进行排序,和普通的排序不同的在于,可能输入的是大数据,所以输入的数据保持要用字符形式;
这一题,最近学STL的优先队列,就拿来练练手了;
#include <iostream>
#include <algorithm>
#include <string>
#include <queue>
#include <stdio.h>
#include <string.h>
using namespace std;
struct node
{
char Str[];
int Len;
friend bool operator <(node aa,node bb)/*小于号重载*/
{
if(aa.Len>bb.Len)return ;
else if(aa.Len<bb.Len)return ;
else
{
int Len=aa.Len;
int i;
for(i=;i<Len;i++)
{
if(aa.Str[i]==bb.Str[i])continue;
else if(aa.Str[i]>bb.Str[i])return ;
else return ;
}
}
}
};
int main()
{
int N,i;
while(scanf("%d",&N)!=EOF)
{
priority_queue<node>ID;
node STR;
int sign=;
for(i=;i<N;i++)
{
scanf(" %s",STR.Str);
STR.Len=strlen(STR.Str);
ID.push(STR);
}
for(i=;i<N;i++)
{
printf("%s\n",ID.top().Str);
ID.pop();
}
}
return ;
}