// t测试组数 共n个篮子 选m个篮子 a表示苹果数量 b表是梨子数量 #include <stdio.h> int main() { int t,n,m;// t是测试组的组数,n是篮子数,m是选取的篮子数 int i,j; int a[100000][2];//用二维数组存放苹果和梨子数目 a[][0]表示苹果 a[][1]表示梨子 int k=0; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(i=0;i<n;i++) { scanf("%d%d",&a[i][0],&a[i][1]); } for(i=0;i<m;i++) //计数m次取篮子的循环 { k=0; for(j=1;j<n;j++) //比较苹果数的循环 { if(a[k][0]<a[j][0]) //找出苹果数目最多的篮子 { k=j; } else if(a[k][0]==a[j][0]&&a[k][1]<a[j][1]) //苹果数目相同则找出梨子数多的 k=j; } printf("%d",k+1);//每找出一个篮子就打印一次 直到m次结束 if(i<m-1) printf(" "); a[k][0]=0; //取出篮子之后就把该篮子的苹果数目改为零 防止下次再被重复选 } printf("\n"); } return 0; } |
Double click to view unformatted code.