Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
郁闷,原来把问题想得太复杂了。现在AC了,发个程序庆祝 一下#include <stdio.h> int fun(char a[6][4]); int samenum(char a[6][4]); int samenum1(char a[6][4]); int straight(char a[6][4]); int SUMNUM(char a[6][4]); int main() { int W,i; scanf("%d",&W); for(i=0;i<W;i++) { int j,score; char a[6][4]; for(j=1;j<=5;j++) { scanf("%s",a[j]);//puts(a[j]); } score=fun(a); //if(!score) printf("O\n"); //else printf("%d\n",score); } //getchar(); //getchar(); } //fun int fun(char a[6][4]) { int minnum=samenum1(a),maxnum=samenum(a),maxnum1=SUMNUM(a); //printf("samemin=%d,maxnum=%d,maxnum1=%d\n",minnum,maxnum,maxnum1); if((a[1][0]==a[2][0]&&a[2][0]==a[3][0]&&a[3][0]==a[4][0]&&a[4][0]==a[5][0])&& (straight(a))) { return 1000; } else if(maxnum==4) return 750; else if((maxnum==3)&&(minnum==2)) { return 500; } else if(a[1][0]==a[2][0]&&a[2][0]==a[3][0]&&a[3][0]==a[4][0]&&a[4][0]==a[5][0]) return 350; else if(straight(a)) return 250; else if((maxnum==3)) return 200; else if(maxnum==2&&maxnum1==2) return 100; else if(maxnum==2&&maxnum1==1) return 50; return 0; } int samenum(char a[6][4]) { int i,j,num,max=-1; for(i=1;i<=5;i++) { num=1; for(j=1;j<=5;j++) { if(j==i) continue; if(a[i][1]==a[j][1]) num++; } if(num>max) max=num; } return max; } // int samenum1(char a[6][4]) { int i,j,num,min=100;; for(i=1;i<=5;i++) { num=1; for(j=1;j<=5;j++) { if(j==i) continue; if(a[i][1]==a[j][1]) num++; } if(num<min) min=num; } return min; } //straight int straight(char a[6][4]) { int t,tt,min; char b[6]; for(t=1;t<=5;t++) { if(a[t][1]>'9') switch(a[t][1]) { case 'A':a[t][1]='1';break; case 'X':a[t][1]='9'+1;break; case 'J':a[t][1]='9'+2;break; case 'Q':a[t][1]='9'+3;break; case 'K':a[t][1]='9'+4; } b[t]=a[t][1]; } for(t=1;t<5;t++) { min=t; for(tt=t+1;tt<=5;tt++) if(b[tt]<b[min]) min=tt; if(min!=t) { char temp=b[t]; b[t]=b[min]; b[min]=temp; } } //test // for(t=1;t<=5;t++) // printf("-%d-",b[t]-'0'); for(t=2;t<=5;t++) { if((b[t]-b[t-1])==1) continue; else break; } if(t==6) return 1; if(((b[1]=='1')&&(b[2]=='9'+1)&&(b[3]=='9'+2)&&(b[4]=='9'+3)&&(b[5]=='9'+4))) return 1; return 0; } int SUMNUM(char a[6][4]) { int i,j,flag[6]={0}; for(i=1;i<5;i++) { for(j=i+1;j<=5;j++) if(a[i][1]==a[j][1]) {flag[i]=1;flag[j]=1; goto loop;} } loop:for(i=1;i<5;i++) { if(!flag[i]) { for(j=i+1;j<=5;j++) { if(!flag[j]) { if(a[i][1]==a[j][1]) return 2; } } } } return 1; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator