题解 | 扑克牌大小
扑克牌大小
https://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb
#include <iostream> #include <bits/stdc++.h> #include <sstream> #include <string> #include <vector> using namespace std; void prt(vector<vector<string>>& players) { for (auto p : players) { for (auto poke : p) { cout << poke; } cout << endl; } return; } void prt_pokes(vector<string>& pokes) { for (auto& p : pokes) { cout << p << " "; } cout << endl; return; } int pokeVal(string& s) { if (s.size() == 1) { char c = s[0]; if (c >= '3' && c <= '9') { return c - '0'; } if (c == 'J') return 11; if (c == 'Q') return 12; if (c == 'K') return 13; if (c == 'A') return 14; if (c == '2') return 15; } if (s.size() == 2) return 10; if (s[0] == 'j') return 16; return 17; } int main() { string s, spokes; vector<vector<int>> player_vals; vector<vector<string>> player_pokes; getline(cin, s); istringstream iss(s); while (getline(iss, spokes, '-')) { istringstream iss2(spokes); string poke; int poke_val; vector<int> player; vector<string> s_pokes; while (getline(iss2, poke, ' ')) { poke_val = pokeVal(poke); player.emplace_back(poke_val); s_pokes.emplace_back(poke); } player_vals.emplace_back(player); player_pokes.emplace_back(s_pokes); } //prt(players); int p1_pks = player_vals[0].size(), p2_pks = player_vals[1].size(); if (p1_pks == p2_pks) { int pn = player_vals[0][0] > player_vals[1][0] ? 0 : 1; prt_pokes(player_pokes[pn]); } else { if (p1_pks == 2 || p2_pks == 2) { int pn = p1_pks == 2 ? 0 : 1; int pother = 1 - pn; if (player_vals[pn][0] == 16) { prt_pokes(player_pokes[pn]); } else { if (player_vals[pother].size() == 4) { prt_pokes(player_pokes[pother]); } else { cout << "ERROR"; } } } else { if (p1_pks == 4 || p2_pks == 4) { int pn = p1_pks == 4 ? 0 : 1; prt_pokes(player_pokes[pn]); }else{ cout << "ERROR"; } } } return 0; } // 64 位输出请用 printf("%lld")