题解 | #扑克牌大小#
扑克牌大小
https://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb
#include <iostream> #include <sstream> #include <vector> using namespace std; int get_level(vector<int>& v) { if (v.size() == 1) { return 1; } if (v.size() == 2) { return 2; } if (v.size() == 3) { return 3; } if (v.size() == 5) { return 4; } if (v.size() == 4) { return 5; } return 10; } void get_v(string& s, vector<int>& resv) { stringstream ss(s); string tem; while (ss >> tem) { int tem_num; if(tem.size()==5){ if(tem[0]=='j'){ tem_num = 50; resv.push_back(tem_num); continue; }if(tem[0]=='J'){ tem_num = 100; resv.push_back(tem_num); continue; } } if (tem.size() == 2) { tem_num = 10; resv.push_back(tem_num); continue; } else if (tem.size() == 1) { if (tem[0] >= '0' && tem[0] <= '9') { resv.push_back(tem[0] - '0'); continue; } else { if (tem[0] == 'J') { resv.push_back(11); continue; } if (tem[0] == 'Q') { resv.push_back(12); continue; } if (tem[0] == 'K') { resv.push_back(13); continue; } if (tem[0] == 'A') { resv.push_back(14); continue; } } } } } int main() { string l; string r; vector<int> lv; vector<int> rv; getline(cin, l, '-'); getline(cin, r); //有对王 if (l[0] == 'j'&&l.size()==11) { cout << l; return 0; } if (r[0] == 'j'&&r.size()==11) { cout << r; return 0; } //放入vector get_v(l, lv); get_v(r, rv); int lval = 0; int rval = 0; //获得等级 lval = get_level(lv); rval = get_level(rv); //测试 //cout<<"左侧为:"<<l<<" 等级为:"<<lval<<endl<<"右侧为:"<<r<<" 等级为:"<<rval<<endl; //等级相同才能比 if ( lval == rval) { if (lv[0] > rv[0]) { cout << l; return 0; } else { cout << r; return 0; } } else { if (lval != 5 && rval != 5) { //等级不同时且无炸弹 cout << "ERROR"; return 0; } else { //等级不同有炸弹 if(lval==5){ cout<<l;return 0; } if(rval==5){ cout<<r;return 0; } } } } // 64 位输出请用 printf("%lld")
又臭又长