其他分享
首页 > 其他分享> > HDU1425--sort

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