题目链接http://codeforces.com/contest/106/problem/A
题意:一套牌有S、H、D、C四种花色,按等级分成6、7、8、9、T、J、Q、K、A。每次选出一个花色作为无敌的花色(属于这个花色的牌可以打败所有不属于这个花色的牌,无视等级)。
第一张牌打败第二张牌的情况有:
1。第一张牌是无敌的花色,第二张牌不是
2。第一张牌和第二张牌的花色相同,并且第一张牌的等级高于第二张牌
其余的所有情况均视为第一张牌不能打败第二张牌(包括第一张牌的花色不同于第二张牌且第一张牌不是无敌的)
如果第一张牌能够打败第二张牌,输出YES,否则输出NO。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <limits.h>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#define ll long long
#define ms(a) memset(a,0,sizeof(a))
#define pi acos(-1.0)
#define INF 0x3f3f3f3f
const double E=exp(1);
const int maxn=1e6+10;
using namespace std;
char c1[3],c2[3];
int main(int argc, char const *argv[])
{
ios::sync_with_stdio(false);
map<char,int>mmp;
mmp.clear();
mmp['6']=1;
mmp['7']=2;
mmp['8']=3;
mmp['9']=4;
mmp['T']=5;
mmp['J']=6;
mmp['Q']=7;
mmp['K']=8;
mmp['A']=9;
mmp['S']=11;
mmp['H']=12;
mmp['D']=13;
mmp['C']=14;
char c;
cin>>c;
cin>>c1>>c2;
int flag=0;
if(c1[1]==c)
flag+=1;
if(c2[1]==c)
flag+=2;
if(flag==1)
cout<<"YES"<<endl;
else
{
if(c1[1]==c2[1])
{
if(mmp[c1[0]]>mmp[c2[0]])
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
else
cout<<"NO"<<endl;
}
return 0;
}