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 |
是非常恶心!!!Source Code Problem: 3966 User: dut200901102 Memory: 168K Time: 47MS Language: C++ Result: Accepted Source Code #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; struct node{int t;char c;}p[5]; int get_num(char st) { if(st=='T')return 10; if(st=='J')return 11; if(st=='Q')return 12; if(st=='K')return 13; if(st=='A')return 14; return st-'0'; } bool operator < (const node &x,const node &y) { return x.t<y.t; } void init() { char st[3]; for(int i=0;i<5;++i) { scanf("%s",st); p[i].c=st[1],p[i].t=get_num(st[0]); } sort(p,p+5); // for(int i=0;i<5;++i)cout<<p[i].t<<" ";cout<<endl; // for(int i=0;i<5;++i)cout<<p[i].c<<" ";cout<<endl; } bool Straight(int &top) { if(p[0].t==2&&p[1].t==3&&p[2].t==4&&p[3].t==5&&p[4].t==14){top=5;return true;} for(int i=1;i<5;++i) if(p[i].t!=p[i-1].t+1)return false; top=p[4].t; return true; } bool Flush() { for(int i=1;i<5;++i) if(p[i].c!=p[i-1].c)return false; return true; } bool Straight_Flush(int &top) { return (Straight(top)&&Flush()); } bool Four_of_a_Kind(int &top,int &top1) { if(p[0].t==p[3].t){top=p[0].t,top1=p[4].t;return true;} if(p[1].t==p[4].t){top=p[1].t,top1=p[0].t;return true;} return false; } bool Full_House(int &top,int &top1) { if(p[0].t==p[2].t&&p[3].t==p[4].t){top=p[0].t,top1=p[4].t;return true;} if(p[2].t==p[4].t&&p[0].t==p[1].t){top=p[2].t,top1=p[0].t;return true;} return false; } bool Three_of_a_Kind(int &top,int &top1,int &top2) { if(p[0].t==p[2].t){top=p[0].t,top1=p[4].t,top2=p[3].t;return true;} if(p[1].t==p[3].t){top=p[1].t,top1=p[4].t,top2=p[0].t;return true;} if(p[2].t==p[4].t){top=p[2].t,top1=p[1].t,top2=p[0].t;return true;} return false; } bool Two_Pairs(int &top,int &top1,int &top2) { if(p[0].t==p[1].t&&p[2].t==p[3].t){top=p[2].t,top1=p[0].t,top2=p[4].t;return true;} if(p[0].t==p[1].t&&p[3].t==p[4].t){top=p[3].t,top1=p[0].t,top2=p[2].t;return true;} if(p[1].t==p[2].t&&p[3].t==p[4].t){top=p[3].t,top1=p[1].t,top2=p[0].t;return true;} return false; } bool One_Pair(int &top,int &top1,int &top2,int &top3) { if(p[0].t==p[1].t){top=p[0].t,top1=p[4].t,top2=p[3].t,top3=p[2].t;return true;} if(p[1].t==p[2].t){top=p[1].t,top1=p[4].t,top2=p[3].t,top3=p[0].t;return true;} if(p[2].t==p[3].t){top=p[2].t,top1=p[4].t,top2=p[1].t,top3=p[0].t;return true;} if(p[3].t==p[4].t){top=p[3].t,top1=p[2].t,top2=p[1].t,top3=p[0].t;return true;} return false; } int get_rank_common() { int cnt=1; for(int i1=2;i1<=14;++i1) for(int i2=2;i2<i1;++i2) for(int i3=2;i3<i2;++i3) for(int i4=2;i4<i3;++i4) for(int i5=2;i5<i4;++i5) { if(i5+1==i4&&i4+1==i3&&i3+1==i2&&i2+1==i1)continue; if(i1==14&&i2==5&&i3==4&&i4==3&&i5==2)continue; if(i1==p[4].t&&i2==p[3].t&&i3==p[2].t&&i4==p[1].t&&i5==p[0].t)return cnt; cnt++; } } int get_rank_3K(int top,int top1,int top2) { int cnt=1; for(int u=2;u<=14;++u) for(int i=2;i<=14;++i) if(i!=u) for(int j=2;j<i;++j) if(j!=u) { if(j==top2&&i==top1&&u==top)return cnt; cnt++; } } int get_rank_2P(int top,int top1,int top2) { int cnt=1; for(int i=2;i<=14;++i) for(int j=2;j<i;++j) for(int k=2;k<=14;++k) { if(k==i||k==j)continue; if(i==top&&j==top1&&k==top2)return cnt; cnt++; } } int get_rank_1P(int top,int top1,int top2,int top3) { int cnt=1; for(int u=2;u<=14;++u) for(int i=2;i<=14;++i) if(i!=u) for(int j=2;j<i;++j) if(j!=u) for(int k=2;k<j;++k) if(k!=u) { if(top==u&&top3==k&&top2==j&&top1==i)return cnt; cnt++; } } int solve() { int top,top1,top2,top3; if(Straight_Flush(top)) return 7452+top-4; if(Four_of_a_Kind(top,top1)) return 7296+(top-2)*12+top1-1-(top1>top); if(Full_House(top,top1)) return 7140+(top-2)*12+top1-1-(top1>top); if(Flush()) return 5863+get_rank_common(); if(Straight(top)) return 5853+top-4; if(Three_of_a_Kind(top,top1,top2)) return 4995+get_rank_3K(top,top1,top2); if(Two_Pairs(top,top1,top2)) return 4137+get_rank_2P(top,top1,top2); if(One_Pair(top,top1,top2,top3)) return 1277+get_rank_1P(top,top1,top2,top3); return get_rank_common(); } int main() { // freopen("in.txt","r",stdin); init(); printf("%d\n",solve()); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator