3 6 4 2 2.5 5 1 3 4 5 1 3.5 2 2 2 1 1 1 1 1 10 3 3 2 1 2 3 2 3 1 3 1 2
6 5 3 1 2 1
#include<iostream>
#include<cstdio>
#include<cstring>
#define MAX 1000
double a[300][300],b[300];
using namespace std;
int main()
{
int m,n,k,i,j;
while(scanf("%d%d%d",&n,&m,&k)!=EOF)
{
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%lf",&a[i][j]); //输入每个人打的分数
for(j=0;j<m;j++)
{
double sum=0;
for(i=0;i<n;i++)
{
sum+=a[i][j]; //求出每列的分数和,每列对应一个题目
}
b[j]=sum;
}
int f[MAX];
memset(f,0,sizeof(f));
for(i=0;i<k;i++)
{
double max=b[0];
int flag = i; //记录最大分数和的下标
for(j=m-1;j>=0;j--)
{
if(max-b[j]<10e-6) //比较求出最大分数和的值,标记下来
{
max=b[j];
flag=j;
}
}
f[flag+1]=1;
b[flag]=0; //将最大的数去除
}
int p=1;
for(i=MAX-1;i>=0;i--)
{
if(f[i])
{
if(p)p=0;
else
printf(" "); //格式化输出
printf("%d",i);
}
}
printf("\n");
}
return 0;
}
HDU-1031- Design T-Shirt(c++ && 简单模拟)
原文地址:http://blog.csdn.net/qq_16542775/article/details/45954839