hdoj 1031 Design T-Shirt(排序)

来源:互联网 发布:淘宝店家温馨小纸条 编辑:程序博客网 时间:2024/06/05 00:40

这题不难,用好排序函数就ok。

有个细节就是我在cmp1函数里讨论a.sum和b.sum相等的情况是根据index的大小进行排序的。

其实事实上,不用这个处理也行,因为如果存在sum值相同,index不同的情况,默认排序就是index更小的在前面。。。

#include<iostream>#include<algorithm>using namespace std;typedef struct py{double sum,index;}py;bool cmp1(const py &a,const py &b){if(a.sum==b.sum){return a.index<b.index;}elsereturn a.sum>b.sum;}bool cmp2(const py &a,const py &b){return a.index>b.index;}    py p[2000];int main(){    double a;     int n,m,k,i,j;    while(cin>>n>>m>>k)     {     for(i=0;i<2000;i++)     {     p[i].sum=0;     p[i].index=i;     }     for(i=1;i<=n;i++)           for(j=1;j<=m;j++)            {            cin>>a;            p[j].sum+=a;            }                      sort(p+1,p+1+m,cmp1);         sort(p+1,p+1+k,cmp2);         for(i=1;i<k;i++)         {         cout<<p[i].index<<" ";         }         cout<<p[i].index<<endl;     }     return 0;}


原创粉丝点击