判断的情况挺多,写的有点乱
#include <algorithm>
#include <sstream>
#include <vector>
#include <map>
using namespace std;
int main() {
string str;
map<string,int> m={
{"3",3},
{"4",4},
{"5",5},
{"6",6},
{"7",7},
{"8",8},
{"9",9},
{"10",10},
{"J",11},
{"Q",12},
{"k",13},
{"A",14},
{"joker",15},
{"JOKER",16},
};
while(getline(cin,str)){
vector<string> v;
istringstream ss;
ss.str(str);
string temp;
while(getline(ss,temp,'-')) v.push_back(temp);
string temp1;
istringstream stemp1,sstemp1;
vector<string> equal_one,equal_two;
stemp1.str(v[0]);
while(getline(stemp1,temp1,' ')) equal_one.push_back(temp1);
sstemp1.str(v[1]);
while(getline(sstemp1,temp1,' ')) equal_two.push_back(temp1);
if(equal_one.size()==equal_two.size()){
if(equal_one.size()==1){
if(m[equal_one[0]]>m[equal_two[0]])cout<<v[0]<<endl;
else cout<<v[1]<<endl;
}
if(equal_one.size()==2){
if(m[equal_one[0]]>m[equal_two[0]])cout<<v[0]<<endl;
else cout<<v[1]<<endl;
}
if(equal_one.size()==3){
if(m[equal_one[0]]>m[equal_two[0]])cout<<v[0]<<endl;
else cout<<v[1]<<endl;
}
if(equal_one.size()==4){
if(m[equal_one[0]]>m[equal_two[0]])cout<<v[0]<<endl;
else cout<<v[1]<<endl;
}
if(equal_one.size()>4){
if(m[equal_one[0]]>m[equal_two[0]])cout<<v[0]<<endl;
else cout<<v[1]<<endl;
}
}
else{
if(equal_one.size()==4||equal_two.size()==4){
if(equal_one.size()==4){
transform(equal_two[0].begin(), equal_two[0].end(),
equal_two[0].begin(), ::toupper);
if(equal_two[0]=="JOKER") cout<<v[1]<<endl;
else cout<<v[0]<<endl;
}
if(equal_two.size()==4){
transform(equal_one[0].begin(), equal_one[0].end(),
equal_one[0].begin(), ::toupper);
if(equal_one[0]=="JOKER") cout<<v[0]<<endl;
else cout<<v[1]<<endl;
}
}//if
else{
if(equal_one[0]=="joker")cout<<v[0]<<endl;
else if(equal_two[0]=="joker") cout<<v[1]<<endl;
else cout<<"ERROR"<<endl;
}
}//else
}
}