XIZOE


私信TA

用户名:903917066

访问量:4231

签 名:

等  级
排  名 315
经  验 5363
参赛次数 1
文章发表 25
年  龄 18
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:

将每张牌的牌面花色存储在字符数组中,每种牌面的倒数第二个字符都是不同的,因而只需要比较倒数第二个字符来比较牌面大小。


参考代码:

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
	int n;
	cin>>n;
	char paimian[13]={'1','2','3','4','5','6','7','8','9','0','J','Q','K'};  //牌面花色的倒数第二个字符 
	for(int i = 0; i < n; i ++)
	{
		char w, card1[3], card2[3];
		cin >> w >> card1 >> card2;           //读取每组数据的王牌花色以及两张牌的牌面花色 
		int len_1 = strlen(card1), len_2 = strlen(card2);   //牌面花色的倒数第一个字符是花色, 
		
		bool flag1 = 0, flag2 = 0;
		if(w == card1[len_1 - 1]) flag1 = 1;   
		if(w == card2[len_2 - 1]) flag2 = 1;     //判断两张牌的花色是不是王牌花色 
			                                        
		if(flag1 && (!flag2)) cout<<"YES"<<endl;   //判断是否其中一张牌的花色是王牌花色而另一张牌的花色不是 
		else if((!flag1) && flag2) cout<<"NO"<<endl;  //如果第一张牌的花色大则输出"YES",第二张牌的花色大则输出"NO"
		                                             
		else{                                   //如果花色一样大则比较牌面大小 
			for(int q = 12; q >= 0; q --) {    //从大到小遍历牌面,判断牌面是否与两张卡的牌面一样 
				if(card2[len_2 - 2] == paimian[q]){ //先判断是否与第二张牌一样
					cout << "NO" << endl;   //如果一样,说明第二张牌的牌面比第一张牌大或者和第一张牌一样
					                      //既第一张牌不比第二张牌大,输出"NO" 
					break;             
				}
				else if(card1[len_1 - 2] == paimian[q]){   //后判断是否与第一张牌一样
					cout << "YES" << endl;   //如果一样,第一张牌一定比第二张牌大,输出"YES" 
					break;
				}
			}
		}
	}
	return 0;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区