NPSC補完計劃

登入註冊帳號.

請輸入帳號, 密碼以及預計登入時間
進階搜尋  

最新消息:

歡迎光臨NPSC補完計劃

+ NPSC補完計劃 » NPSC國中組 » NPSC2008國中組決賽
 G. Poker

作者 主題: G. Poker  (閱讀 2139 次)

joe59491

  • 初級會員
  • **
  • 文章數: 30
  • qazwsxedcrfvtg14
    • 檢視個人資料
G. Poker
« 於: 十二月 04, 2011, 10:35:55 pm »

這題就...直接看程式碼好了(太長,不適合描述)...主要就用一堆手算算出來的...

程式碼:
代碼: [選擇]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct card{
    int point;
    int color;
};
struct player{
    card c0;
    card c1;
    card c2;
    card c3;
    card c4;
    int group;
    int f1;
    int f2;
    int f3;
    int f4;
    int f5;
};
typedef int (*compfn)(const void*, const void*);

int cardcompare(struct card *c1, struct card *c2){
    if(c1->point<c2->point){return 1;}
    if(c1->point==c2->point&&c1->point>c2->point){return 1;}
return 0;
}

char s[5];
player p[2];
card c[5];
int getcard(int a,char b,char d){//處理卡片的輸入
        if(b=='2'){c[a].point=2;}
        if(b=='3'){c[a].point=3;}
        if(b=='4'){c[a].point=4;}
        if(b=='5'){c[a].point=5;}
        if(b=='6'){c[a].point=6;}
        if(b=='7'){c[a].point=7;}
        if(b=='8'){c[a].point=8;}
        if(b=='9'){c[a].point=9;}
        if(b=='T'){c[a].point=10;}
        if(b=='J'){c[a].point=11;}
        if(b=='Q'){c[a].point=12;}
        if(b=='K'){c[a].point=13;}
        if(b=='A'){c[a].point=14;}
        if(d=='S'){c[a].color=0;}
        if(d=='H'){c[a].color=1;}
        if(d=='D'){c[a].color=2;}
        if(d=='C'){c[a].color=3;}
    }
int groupcard(int a){//算出卡片的情況....蠻暴力的...
    /*
    ~~~ ->group號碼
    無對: 以點數最高的牌為比較。->0
    一對: 有兩張相同點數的牌。->1
    兩對: 有兩組相同點數的牌各兩張。->2
    三條: 有三張一樣點數的牌。->3
    順子: 五張順連的牌。->4
    同花: 五張同一花色的牌。->5
    葫蘆: 有三張一樣點數的牌,再加上另外兩點點數一樣的牌。->6
    四條: 有四張一樣點數的牌。->7
    同花順: 有同一花色又順連的牌。->8
    */
    p[a].f1=0; p[a].f2=0; p[a].f3=0; p[a].f4=0; p[a].f5=0;
    if(p[a].c0.point-p[a].c1.point==1&&p[a].c1.point-p[a].c2.point==1&&p[a].c2.point-p[a].c3.point==1&&p[a].c3.point-p[a].c4.point==1){
        if(p[a].c0.color==p[a].c1.color&&p[a].c1.color==p[a].c2.color&&p[a].c2.color==p[a].c3.color&&p[a].c3.color==p[a].c4.color){p[a].f1=p[a].c0.point;p[a].group=8;}
        else{p[a].f1=p[a].c0.point;p[a].group=4;}
        }
    else if(p[a].c0.point==14&&p[a].c1.point==5&&p[a].c2.point==4&&p[a].c3.point==3&&p[a].c4.point==2){
        if(p[a].c0.color==p[a].c1.color&&p[a].c1.color==p[a].c2.color&&p[a].c2.color==p[a].c3.color&&p[a].c3.color==p[a].c4.color){p[a].f1=p[a].c1.point;p[a].group=8;}
        else{p[a].f1=p[a].c1.point;p[a].group=4;}
        }
    else if(p[a].c0.point-p[a].c1.point==0&&p[a].c1.point-p[a].c2.point==0&&p[a].c2.point-p[a].c3.point==0){p[a].f1=p[a].c0.point; p[a].f2=p[a].c4.point;p[a].group=7;}
    else if(p[a].c4.point-p[a].c1.point==0&&p[a].c1.point-p[a].c2.point==0&&p[a].c2.point-p[a].c3.point==0){p[a].f1=p[a].c1.point; p[a].f2=p[a].c0.point;p[a].f1=p[a].c1.point;p[a].group=7;}
    else if(p[a].c0.point-p[a].c1.point==0&&p[a].c1.point-p[a].c2.point==0&&p[a].c3.point-p[a].c4.point==0){p[a].f1=p[a].c0.point; p[a].f2=p[a].c4.point;p[a].group=6;}
    else if(p[a].c0.point-p[a].c1.point==0&&p[a].c2.point-p[a].c3.point==0&&p[a].c3.point-p[a].c4.point==0){p[a].f1=p[a].c4.point; p[a].f2=p[a].c0.point;p[a].group=6;}
    else if(p[a].c0.color==p[a].c1.color&&p[a].c1.color==p[a].c2.color&&p[a].c2.color==p[a].c3.color&&p[a].c3.color==p[a].c4.color){p[a].f1=p[a].c0.point; p[a].f2=p[a].c1.point; p[a].f3=p[a].c2.point; p[a].f4=p[a].c3.point; p[a].f5=p[a].c4.point; p[a].group=5;}
    else if(p[a].c0.point-p[a].c1.point==0&&p[a].c1.point-p[a].c2.point==0){p[a].f1=p[a].c0.point; p[a].f2=p[a].c3.point; p[a].f3=p[a].c4.point; p[a].group=3;}
    else if(p[a].c1.point-p[a].c2.point==0&&p[a].c2.point-p[a].c3.point==0){p[a].f1=p[a].c1.point; p[a].f2=p[a].c0.point; p[a].f3=p[a].c4.point; p[a].group=3;}
    else if(p[a].c2.point-p[a].c3.point==0&&p[a].c3.point-p[a].c4.point==0){p[a].f1=p[a].c2.point; p[a].f2=p[a].c0.point; p[a].f3=p[a].c1.point; p[a].group=3;}
    else if(p[a].c0.point-p[a].c1.point==0&&p[a].c2.point-p[a].c3.point==0){p[a].f1=p[a].c0.point; p[a].f2=p[a].c2.point; p[a].f3=p[a].c4.point; p[a].group=2;}
    else if(p[a].c1.point-p[a].c2.point==0&&p[a].c3.point-p[a].c4.point==0){p[a].f1=p[a].c1.point; p[a].f2=p[a].c3.point; p[a].f3=p[a].c0.point; p[a].group=2;}
    else if(p[a].c0.point-p[a].c1.point==0&&p[a].c3.point-p[a].c4.point==0){p[a].f1=p[a].c0.point; p[a].f2=p[a].c3.point; p[a].f3=p[a].c2.point; p[a].group=2;}
    else if(p[a].c0.point-p[a].c1.point==0){p[a].f1=p[a].c0.point; p[a].f2=p[a].c2.point; p[a].f3=p[a].c3.point; p[a].f4=p[a].c4.point; p[a].group=1;}
    else if(p[a].c1.point-p[a].c2.point==0){p[a].f1=p[a].c1.point; p[a].f2=p[a].c0.point; p[a].f3=p[a].c3.point; p[a].f4=p[a].c4.point; p[a].group=1;}
    else if(p[a].c2.point-p[a].c3.point==0){p[a].f1=p[a].c2.point; p[a].f2=p[a].c0.point; p[a].f3=p[a].c1.point; p[a].f4=p[a].c4.point; p[a].group=1;}
    else if(p[a].c3.point-p[a].c4.point==0){p[a].f1=p[a].c3.point; p[a].f2=p[a].c0.point; p[a].f3=p[a].c1.point; p[a].f4=p[a].c2.point; p[a].group=1;}
    else{p[a].f1=p[a].c0.point; p[a].f2=p[a].c1.point; p[a].f3=p[a].c2.point; p[a].f4=p[a].c3.point; p[a].f5=p[a].c4.point; }
    return 0;
    }
int main()
{
    int a,b,d,e,f,g,h,i,j,k;

    scanf("%d",&a);
    for(b=0;b<a;b++){
        scanf("%s",s);
        getcard(0,s[0],s[1]);
        scanf("%s",s);
        getcard(1,s[0],s[1]);
        scanf("%s",s);
        getcard(2,s[0],s[1]);
        scanf("%s",s);
        getcard(3,s[0],s[1]);
        scanf("%s",s);
        getcard(4,s[0],s[1]);
qsort(c,5,sizeof(struct card),(compfn)cardcompare );
p[0].c0=c[0];
p[0].c1=c[1];
p[0].c2=c[2];
p[0].c3=c[3];
p[0].c4=c[4];


        scanf("%s",s);
        getcard(0,s[0],s[1]);
        scanf("%s",s);
        getcard(1,s[0],s[1]);
        scanf("%s",s);
        getcard(2,s[0],s[1]);
        scanf("%s",s);
        getcard(3,s[0],s[1]);
        scanf("%s",s);
        getcard(4,s[0],s[1]);
qsort(c,5,sizeof(struct card),(compfn)cardcompare );
p[1].c0=c[0];
p[1].c1=c[1];
p[1].c2=c[2];
p[1].c3=c[3];
p[1].c4=c[4];
g=1;
p[0].group=0;
p[1].group=0;
groupcard(0);
groupcard(1);
if(p[0].group>p[1].group){printf("Win\n");}
else if(p[0].group<p[1].group){printf("Lose\n");}
else{
if(p[0].f1>p[1].f1){printf("Win\n");}
else if(p[0].f1<p[1].f1){printf("Lose\n");}
else if(p[0].f2>p[1].f2){printf("Win\n");}
else if(p[0].f2<p[1].f2){printf("Lose\n");}
else if(p[0].f3>p[1].f3){printf("Win\n");}
else if(p[0].f3<p[1].f3){printf("Lose\n");}
else if(p[0].f4>p[1].f4){printf("Win\n");}
else if(p[0].f4<p[1].f4){printf("Lose\n");}
else if(p[0].f5>p[1].f5){printf("Win\n");}
else if(p[0].f5<p[1].f5){printf("Lose\n");}
else{printf("Lose\n");}
}
}
return 0;
}
記錄
(\ (\
(^_^) --by joe59491
+ NPSC補完計劃 » NPSC國中組 » NPSC2008國中組決賽
 G. Poker