zoj2511-Design T-Shirt(第二优先级比较)

来源:互联网 发布:文笔好的网络作家 编辑:程序博客网 时间:2024/05/29 14:20

这里自己写的代码就是不知道哪个数据错了,网上找了代码看看,学习了怎么第一优先级相同情况下通过第二优先级来判断.同时可见用STL和容器可以让代码如此简短和高效,要多多运用.先我自己的代码

#include<iostream>#include<queue>using namespace std;int main(){int num;double pi[1001];while(cin>>num){int elnum,pinum;cin>>elnum;cin>>pinum;priority_queue<int> que;for(int i=0;i<elnum;i++)pi[i]=0;while(num--){for(int i=0;i<elnum;i++){double temp;cin>>temp;pi[i]+=temp;}}for(int j=0;j<pinum;j++){double max=0.0;int xu;for(int i=0;i<elnum;i++){if(pi[i]>max){max=pi[i];xu=i+1;}}que.push(xu);pi[xu-1]=0;}if(!que.empty()){cout<<que.top();que.pop();}while(!que.empty()){cout<<' '<<que.top();que.pop();}if(pinum)cout<<endl;}}


网上他人代码,里面通过cmp比较器实现带第二优先级排序.

/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2011-12-23 18:37 # Filename: ZOJ2511 HDU1031 Design T-Shirt.cpp # Description :  ******************************************************************************/// #include "stdafx.h"// #define DEBUG#include <fstream>#include <stdio.h>#include <iostream>#include <string.h>#include <string>#include <memory.h>#include <limits.h>#include <algorithm>#include <math.h>#include <numeric>#include <functional>#include <ctype.h>#include <map>#define MAX 10010using namespace std;pair<int,double> pool[MAX];bool cmp(const pair<int,double> &lhs,const pair<int,double> &rhs){if(lhs.second == rhs.second)return lhs.first<rhs.first;return lhs.second > rhs.second;}int main(void){#ifdef DEBUG    freopen("C:/Users/neo/Desktop/stdin.txt","r",stdin);  freopen("C:/Users/neo/Desktop/stdout.txt","w",stdout); #endif  int n,m,k;double lf_temp;int result[MAX];while(~scanf("%d%d%d",&n,&m,&k)){for(int i=1;i<=m;++i){pool[i].first=i;pool[i].second=0.0;}for(int i=0;i<n;++i)for(int j=1;j<=m;++j){scanf("%lf",&lf_temp);pool[j].second+=lf_temp;}sort(pool+1,pool+1+m,cmp);for(int i=1;i<=k;++i)result[i-1]=pool[i].first;sort(result,result+k);for(int i=k-1;i>=0;--i)printf("%d%c",result[i],i==0?'\n':' ');}  return 0;}