CF106A Card Game

思路

首先判断是不是王牌套装,分以下两种情况:

  • A 是王牌套装并且 B 不是,A 胜利。

  • B 是王牌套装并且 A 不是,B 胜利。

接下来开始比较。如果套装不相等就查找套装,看看谁的套装大谁赢。

如果套装相等就找等级,看看谁的等级大谁赢。

比较时可以采用打表的方法。

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
char king,A_lv,A_suit,B_lv,B_suit;
//king表示王牌套装,lv表示等级,suit表示套装 
char s1[]={'6','7','8','9','T','J','Q','K','A'};
//打表-表示每个字母的等级 
char s2[]={'S','H','D','C'};
int main()
{
	cin>>king;
	cin>>A_lv>>A_suit;
	cin>>B_lv>>B_suit;
	if(king==A_suit&&king!=B_suit) //如果A有王牌套装并且B没有A肯定获胜 
	{cout<<"YES"<<endl;return 0;}
	if(king==B_suit&&king!=A_suit) //反之,如果B有而A没有,则A输 
	{cout<<"NO"<<endl;return 0;}
	if(A_suit==B_suit)//如果套装一样就找等级 
	{
		int A_ans=0,B_ans=0;
		for(int i=0;i<9;++i)
		{
	    	if(s1[i]==A_lv) A_ans=i;
			if(s1[i]==B_lv) B_ans=i;	
			//分别找出A和B的等级 
		}
		if(A_ans>B_ans) cout<<"YES"<<endl;
		else            cout<<"NO"<<endl;//比较 
		return 0;
	}
	else      //否则比谁的套装大 
	{
		int A_ans=0,B_ans=0;
		for(int i=0;i<5;++i)
		{
	    	if(s1[i]==A_suit) A_ans=i;
			if(s1[i]==B_suit) B_ans=i;	
			//分别找出A和B的套装 
		}
		if(A_ans>B_ans) cout<<"YES"<<endl;
		else            cout<<"NO"<<endl;//比较 
		return 0;
	}
	return 0;
}
上一篇:PAT 乙级 1095.解码PAT准考证 C++/Java


下一篇:Typescript 的数据类型有哪些?