程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Y,yy

Y,yy

編輯:C++入門知識

Y,yy


Description

Soon after he decided to design a T-shirt for our Algorithm Board on Free-City BBS, XKA found that he was trapped by all kinds of suggestions from everyone on the board. It is indeed a mission-impossible to have everybody perfectly satisfied. So he took a poll to collect people's opinions. Here are what he obtained: N people voted for M design elements (such as the ACM-ICPC logo, big names in computer science, well-known graphs, etc.). Everyone assigned each element a number of satisfaction. However, XKA can only put K (<=M) elements into his design. He needs you to pick for him the K elements such that the total number of satisfaction is maximized.                         

Input

The input consists of multiple test cases. For each case, the first line contains three positive integers N, M and K where N is the number of people, M is the number of design elements, and K is the number of elements XKA will put into his design. Then N lines follow, each contains M numbers. The j-th number in the i-th line represents the i-th person's satisfaction on the j-th element.                         

Output

For each test case, print in one line the indices of the K elements you would suggest XKA to take into consideration so that the total number of satisfaction is maximized. If there are more than one solutions, you must output the one with minimal indices. The indices start from 1 and must be printed in non-increasing order. There must be exactly one space between two adjacent indices, and no extra space at the end of the line.                         

Sample Input

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                 

Sample Output

6 5 3 1 2 1     超時  然後將代碼不斷修改  C++輸入改為使用C輸入 對scanf函數不熟悉!!! 輸入雙精度浮點數使用“%lf”   使用“%f“和”%e"都無法讀取到正確的數字,因為這兩者為浮點數!!
#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int N,M,K;
double s[1000][1000];
int cmp(const void *a,const void *b)
{
    return *(int*)a<*(int*)b?1:-1;
}
void f(double sum[],int p[])
{
    int k=0,j,i;
    while(k<K){
        for(j=0;j<M;j++){
            bool flag=true;
            for(i=0;i<M;i++){
                if(sum[j]<sum[i]){
                    flag=false;
                    break;
                }
            }
            if(flag==true){
                sum[j]=-1;
                p[k++]=j+1;
                break;
            }
            else continue;
        }
    }
}
int main()
{
    while(scanf("%d %d %d",&N,&M,&K)!=EOF){
        double sum[1000];
        int p[1000];
        int i=0,j;
        memset(sum,0,sizeof(sum));
        while(i<N){
            for(j=0;j<M;j++){
                scanf("%lf",&s[i][j]);
                sum[j]+=s[i][j];
            }
            i++;
        }
        f(sum,p);
        qsort(p,K,sizeof(p[0]),cmp);
        for(i=0;i<K;i++){
            if(i==K-1)printf("%d\n",p[i]);
            else printf("%d ", p[i]);
        }
    }
    //system("pause");
    return 0; 
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved