题意:有N个人对M个元素进行投票,只选出前K个票数最多的。并且按照非递增顺序输出前K大的元素序号。
解题思路:利用结构体+暴力,详见代码。
Code:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
#define maxn 10000
struct Node{
int i;
float x;
}element[maxn];
int N,M,K;
bool cmp1(Node a,Node b)
{
return a.x > b.x;
};
bool cmp2(Node c,Node d)
{
return c.i>d.i;
}
int main()
{
float a;
int i,j;
while(scanf("%d%d%d",&N,&M,&K) != EOF)
{
memset(element,0,sizeof(element));
while(N--)
{
for(i=0;i<M;i++)
{
cin>>a;
element[i].x +=a;
element[i].i = i+1;
}
}
sort(element,element+M,cmp1);
sort(element,element+K,cmp2);
for(j=0;j<K-1;j++)
cout<<element[j].i<<" ";
cout<<element[K-1].i<<endl;
}
}