题解 | #Arch0n's interesting game#

Arch0ns interesting game

https://ac.nowcoder.com/acm/problem/15686

“一眼看出哪张牌小”,即每个组合中取小的那一张作为组合的分值,用个if判断就行了,然后排序从大到小,取第k大的分值,因为是用数组存分值,所以最后取得数组为a[k-1]。

```#include<stdio.h>
#include<stdlib.h>
#define N 2500*2500
int cmp (const void *a,const void *b)//排序
{
	return *(int*)b-*(int*)a;
}
int main ()
{
    int sum[N];
	int t,n,k;
	int i,j,m=0;
    int x,y;
	scanf("%d",&t);
	for(i=0;i<t;i++)
	{
		int a[2500]={0};//有t组数据,每组数据的a[]数组要清零,所以放在循坏内
		scanf("%d %d",&n,&k);
		for(j=0;j<n;j++)
		{
			scanf("%d",&a[j]);
		}
		m=0;//一共t组数据,所以记得更新m=0
		for(x=0;x<n-1;x++)
		{
			for(y=x+1;y<n;y++)
			{
				if(a[x]<a[y])
                {
                    sum[m]=a[x];
                }
                else
                {
                    sum[m]=a[y];
                }
                m++;
			}
		}
		qsort(sum,m,sizeof(int),cmp);//排序
		printf("%d\n",sum[k-1]);
	}
	return 0;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务