View Code of Problem 5

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
/*本题思路:第一步,将苹果的数量*10000+梨的数量存入一个单独的数组里面,然后每次按次序挑选数组里最大的值,直到挑选了m个篮子*/ 
int MAX(int v[],int n)//每次循环选择v中最大的值 
{	int max=0;
	for(int i=0;i<n;i++)
	{
		if(v[i]>v[max]&&v[i]!=-1)
		{
			max=i;
		}
	}
	v[max]=-1;//为了防止最大的值被再次选中,每次将已经选择的值设置为-1 
	return max+1;
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n,m,i,max;
		scanf("%d%d",&n,&m);
		int a[100000][2];
		int v[100000]={0};
		for(i=0;i<n;i++)
		{
			scanf("%d%d",&a[i][0],&a[i][1]);
			v[i]=a[i][0]*100000+a[i][1];//将苹果与梨的权值和存入v数组 
		}
		for(i=0;i<m;i++)
		{
			max=MAX(v,n);
			if(i==m-1)
			{
				printf("%d\n",max);
			}
			else
			{
				printf("%d ",max);	
			}
		}
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 5