- 问题描述
-
玩家1和玩家2各出一张牌,看谁大。如果两张牌都不是王牌花色或则都是王牌花色,则牌面大的牌大,如果牌面一样大则一样大。若其中一张牌是王牌而另一张不是,则无论牌面如何都是王牌花色大。
- 输入
-
第一行一个数字n,代表数据组数(n <= 10)
对于每组数据,首先输入一个字符(S\H\D\C),表示王牌花色。
接下去一行有两张牌面,表示为牌面花色,如8D、9S等。 - 输出
-
对于每组数据,输出第一张牌是否比第二张牌大,若是则输出YES,否则输出NO
- 样例输入
-
1 H QH 9S
- 样例输出
-
YES
AC代码:
#include<iostream> #include<string.h> #include<ctype.h> #include<cstdio> #include<algorithm> using namespace std; int main() { int n; cin>>n; getchar(); while(n--) { char ch; cin>>ch; char s1[5],s2[5]; scanf("%s%s",s1,s2); char a,b,c,d; int p,q; bool f1=false,f2=false; if(isdigit(s1[0])) {sscanf(s1,"%d%c",&p,&a);f1=true;} else sscanf(s1,"%c%c",&c,&a); if(isdigit(s2[0])) {sscanf(s2,"%d%c",&q,&b);f2=true;} else sscanf(s2,"%c%c",&d,&b); if(a==ch&&b!=ch) cout<<"YES"<<endl; else if(a!=ch&&b==ch) cout<<"NO"<<endl; else if((a==ch&&b==ch)||(a!=ch&&b!=ch)) { if(!f1&&f2) cout<<"YES"<<endl; else if(f1&&!f2) cout<<"NO"<<endl; else if(!f1&&!f2) { int ss,sss; if(c=='J') ss=0; else if(c=='Q') ss=1; else if(c=='K') ss=2; if(d=='J') sss=0; else if(d=='Q') sss=1; else if(d=='K') sss=2; if(ss-sss>0) cout<<"YES"<<endl; else cout<<"NO"<<endl; } else if(f1&&f2) { if(p-q>0) cout<<"YES"<<endl; else cout<<"NO"<<endl; } } }return 0; }