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

10131 - Is Bigger Smarter?

編輯:C++入門知識

[cpp] 
描述:題意很簡單,先快排一下,然後從中選擇即可,因為我覺得只用數組有些麻煩,所以用了結構體 
#include <cstdio>  
#include <cstdlib>  
struct Ele 

    int We; 
    int Iq; 
    int sum; 
    int next; 
    int pos; 
}; 
Ele count[1010]; 
int cmp(const void *p1 ,const void *p2) 

    int p1_We=((Ele *)p1)->We,p1_Iq=((Ele *)p1)->Iq; 
    int p2_We=((Ele *)p2)->We,p2_Iq=((Ele *)p2)->Iq; 
    if(p1_We>p2_We) return 1; 
    else if(p1_We<p2_We) return -1; 
    else 
    { 
        if(p1_Iq>p2_Iq) return -1; 
        else return 1; 
    } 

int main() 

    //freopen("a.txt","r",stdin);  
    int x,y,len=0; 
    while(scanf("%d %d",&x,&y)!=EOF) 
    { 
        count[len].We=x; 
        count[len].Iq=y; 
        count[len].sum=1; 
        count[len].next=-1; 
        count[len].pos=len+1; 
        len++; 
    } 
    qsort(count,len,sizeof(Ele),cmp); 
    for(int i=len-2; i>=0; i--) 
    { 
        y=x=-1; 
        for(int j=len-1; j>i; j--) 
            if(count[i].We<count[j].We&&count[i].Iq>count[j].Iq) 
            { 
                if(x==-1) 
                { 
                    x=count[j].sum; 
                    y=j; 
                } 
                else if(x<count[j].sum) 
                { 
                    x=count[j].sum; 
                    y=j; 
                } 
            } 
        count[i].sum+=count[y].sum; 
        count[i].next=y; 
    } 
    y=0; 
    x=count[0].sum; 
    for(int i=1; i<len; i++) 
        if(x<count[i].sum) 
        { 
            x=count[i].sum; 
            y=i; 
        } 
    printf("%d\n",x); 
    while(y!=-1) 
    { 
        printf("%d\n",count[y].pos); 
        y=count[y].next; 
    } 
    return 0; 

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