1.題目

2.思路
手牌比較:
(1)如果手牌的類型不同(分為三種情況):
1)存在王炸,則直接輸出王炸;
2)else if存在炸彈,則直接輸出炸彈;
3)其他最後情況:無法比較,直接輸出ERROR。
(2)如果手牌的類型相同(單對單、二對二、三對三、炸彈對炸彈、順子對順子):
3.代碼
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
string str;
string std="345678910JQKA2jokerJOKER";
while(getline(cin,str)){
int index=str.find('-');
string str1=str.substr(0,index);//截取下标為0,長度為index的字元串
string str2=str.substr(index+1);//第二組手牌
int n1=count(str1.begin(),str1.end(),' ');
int n2=count(str2.begin(),str2.end(),' ');
if(n1!=n2){//根據空格數判斷兩對手牌是否相同類型,如果不同時
if(str1=="joker JOKER"||str2=="joker JOKER"){
cout<<"joker JOKER"<<endl;
}else if(n1==3){//如果1方為炸彈則赢了(這種情況2方不會同時為炸彈)
cout<<str1<<endl;
}else if(n2==3){//如果2方為炸彈則赢了
cout<<str2<<endl;
}else{//不存在比較關系
cout<<"ERROR"<<endl;
}
}else{//如果兩對手牌是同種類型,則隻用比較第一個
string s1=str1.substr(0,str1.find(' '));
string s2=str2.substr(0,str2.find(' '));
int rank1=std.find(s1);
int rank2=std.find(s2);
if(rank1>rank2){
cout<<str1<<endl;
}else{
cout<<str2<<endl;
}
}
}
return 0;
}