70,020
社区成员




松雅自己拥有多间旅馆,有时候她会在她自己的旅馆里跟她的顾客玩纸牌。
纸牌有52张,每张牌有一个花色,用一个大写字母表示(D-方片、C-草花、S-黑桃、H-红心),同时还有一个点数(2、3、4、5、6、7、8、9、T、J、Q、K、A),因此每张牌可以用两个字符来表示,例如2H,注意点数在前,花色在后,表示这张牌为红心2。
开始时,桌面上有一张牌,玩家手中有5张牌,如果桌面上的牌的点数或者花色与玩家手中的任意一张牌的点数或者花色相同,则玩家赢得这张牌,输出“YES”,否则输出“NO”。
【输入形式】
输入的第一行为一个字符串(两个字符),表示桌面上的牌。
接下来的5行,每行一个字符串(两个字符),表示玩家手中的5张牌
【输出形式】
如果玩家能赢得桌面的牌,则输出“YES”,否则输出“NO”。
下面是使用C++编写的根据规则判断玩家能否赢得桌面牌的代码:
#include <iostream>
#include <string>
using namespace std;
bool checkWin(string deck, string hand) {
// 判断点数或花色是否相同
if (deck[0] == hand[0] || deck[1] == hand[1]) {
return true;
}
return false;
}
int main() {
string deck, hand;
// 读取桌面上的牌
cin >> deck;
// 读取玩家手中的5张牌并判断能否赢得桌面牌
bool win = false;
for (int i = 0; i < 5; i++) {
cin >> hand;
if (checkWin(deck, hand)) {
win = true;
break;
}
}
// 输出结果
if (win) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
该代码首先定义了一个checkWin
函数,用于判断桌面牌与玩家手中的一张牌是否能够赢得。在主函数中,首先读取桌面上的牌,然后循环读取玩家手中的5张牌,并通过调用checkWin
函数判断能否赢得牌。如果能赢得任意一张牌,则将win
标记为true
,并跳出循环。最后根据win
的值输出结果。
解析:首先需要定义一个函数,用于比较两张牌的大小。然后根据输入的桌面牌和玩家手中的牌,判断是否有赢得桌面牌的情况,输出结果。
代码实现如下:
#include <stdio.h>
#include <string.h>
int compare_cards(char card1[], char card2[]) {
int num1 = card1[0] - '0';
int num2 = card2[0] - '0';
if (num1 == num2) {
return card1[1] - 'A' - 'a' + card2[1] - 'A' - 'a';
} else {
return num1 - num2;
}
}
int main() {
char desktop_card[3];
char player_cards[5][3];
for (int i = 0; i < 5; i++) {
scanf("%s", player_cards[i]);
}
scanf("%s", desktop_card);
for (int i = 0; i < 5; i++) {
if (compare_cards(desktop_card, player_cards[i]) == 0) {
printf("YES
");
return 0;
}
}
printf("NO
");
return 0;
}
解析:首先需要判断输入的牌是否在玩家手中的牌中,如果在则输出"YES",否则输出"NO"。
代码如下:
#include <iostream>
#include <string>
using namespace std;
int main() {
string tableCard;
cin >> tableCard;
string player1 = "23456789TJQKA";
string player2 = "23456789TJQKA";
string player3 = "23456789TJQKA";
string player4 = "23456789TJQKA";
string player5 = "23456789TJQKA";
if (player1.find(tableCard) != string::npos || player2.find(tableCard) != string::npos || player3.find(tableCard) != string::npos || player4.find(tableCard) != string::npos || player5.find(tableCard) != string::npos) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}