题解
2025-11-03 17:34:07
发布于:上海
13阅读
0回复
0点赞
有亿点点长
#include <bits/stdc++.h>
using namespace std;
bool cmp(pair <int, string> x, pair <int, string> y) {
return x.first < y.first;
}
void solve() {
vector <pair <int, string> > data(6);
map <string, int> mp;
mp["0"] = 0, mp["1"] = 1, mp["2"] = 2, mp["3"] = 3, mp["4"] = 4, mp["5"] = 5, mp["6"] = 6, mp["7"] = 7, mp["8"] = 8, mp["9"] = 9, mp["10"] = 10, mp["J"] = 11, mp["Q"] = 12, mp["K"] = 13, mp["A"] = 14;
for (int i = 1; i <= 5; i++) {
string r; string s;
cin >> r >> s;
data[i].first = mp[r];
data[i].second = s;
} sort(data.begin() + 1, data.end(), cmp);
bool isHighCard = 0, isOnePair = 0, isTwoPairs = 0, isThreeOfAKind = 0, isFourOfAKind = 0, isFullHouse = 0, isStraight = 0, isStraightFlush = 0, isRoyalFlush = 0;
isHighCard = 1;
int pairs = (data[1].first == data[2].first) + (data[2].first == data[3].first) + (data[3].first == data[4].first) + (data[4].first == data[5].first);
if (pairs == 1) isOnePair = 1;
else if (pairs == 2) {
int cnt_ThreeOfAKind = (data[1].first == data[2].first && data[2].first == data[3].first) + (data[2].first == data[3].first && data[3].first == data[4].first) + (data[3].first == data[4].first && data[4].first == data[5].first);
if (cnt_ThreeOfAKind == 1) isThreeOfAKind = 1;
else isTwoPairs = 1;
} else if (pairs == 3) {
int cnt_ThreeOfAKind = (data[1].first == data[2].first && data[2].first == data[3].first) + (data[2].first == data[3].first && data[3].first == data[4].first) + (data[3].first == data[4].first && data[4].first == data[5].first);
if (cnt_ThreeOfAKind == 1) isFullHouse = 1;
else isFourOfAKind = 1;
} else if (pairs == 0) {
if (data[2].first - data[1].first == 1 && data[2].first - data[1].first == 1 && data[3].first - data[2].first == 1 && data[4].first - data[3].first == 1 && data[5].first - data[4].first == 1) {
isStraight = 1;
if (data[1].second == data[2].second && data[2].second == data[3].second && data[3].second == data[4].second && data[4].second == data[5].second) {
isStraightFlush = 1;
if (data[1].first == 10) isRoyalFlush = 1;
}
}
} if (isRoyalFlush) cout << "Royal Flush\n";
else if (isStraightFlush) cout << "Straight Flush\n";
else if (isStraight) cout << "Straight\n";
else if (isFullHouse) cout << "Full House\n";
else if (isFourOfAKind) cout << "Four of a Kind\n";
else if (isThreeOfAKind) cout << "Three of a Kind\n";
else if (isTwoPairs) cout << "Two Pairs\n";
else if (isOnePair) cout << "One Pair\n";
else if (isHighCard) cout << "High Card\n";
}
int main() {
int t;
cin >> t;
while (t--) solve();
return 0;
}
可读性拉满(((
全部评论 1
d
2025-11-03 来自 上海
0







有帮助,赞一个