【code vs】 2780 ZZWYYQWZHZ

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 ;
}
上一篇:day16


下一篇:Java中的反射机制