HDU1425--sort
作者:互联网
Problem Description
给你n个整数,请按从大到小的顺序输出其中前m大的数。
Input
每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。
Output
对每组测试数据按从大到小的顺序输出前m大的数。
Sample Input
5 3
3 -35 92 213 -644
Sample Output
213 92 3
思路: 由于这n个数各不相同,可以使用数组下标来储存这n个数。因为字符数组占用内存更小,这里使用字符数组。在HDU测试代码时,是测试多组数据,要注意输出格式,每组输出的数字之间有一个空格,最后一个数字后面没有空格,每组输出的最后要有一个回车。
C代码:
#include<stdio.h>
int main()
{
int n,m,k,w;
while(scanf("%d%d",&n,&m)!=EOF)//循环操作多组数据
{
char a[1000001]={'0'};//所有元素初始化为'0'
while(n--)//
{
scanf("%d",&k);
a[k+500000]='1';
}
for(w=1000001;w>=0&&m>0;w--)
{
if(a[w]=='1')//从上限到下限判断,出现输入过的数就输出
{
printf("%d",w-500000);
if(--m>0)//让最后一个数后面不输出空格
putchar(' ');
}
}
putchar('\n');
}
return 0;
}
标签:sort,输出,213,--,每组,HDU1425,空格,数组 来源: https://blog.csdn.net/m0_51994765/article/details/115273673