参考大佬的思路,空格比较法,顺便完善了下单张王之间的比较;

#include"vector"
#include"string"
#include"algorithm"
#include"map"
using namespace std;

int cmp(string s)
{
    switch(s[0])
    {
        case '3' : return 1;
        case '4' : return 2;
        case '5' : return 3;
        case '6' : return 4;
        case '7' : return 5;
        case '8' : return 6;
        case '9' : return 7;
        case '1' : return 8;
        case 'J' : return 9;
        case 'Q' : return 10;
        case 'K' : return 11;
        case 'A' : return 12;
        case '2' : return 13;
    }
    return 0;
}

int main()
{
    string s, s1, s2;
    int t , i;
    while(getline(cin,s))
    {
        s1 = s.substr(0,s.find('-'));
        s2 = s.substr(s.find('-')+1);
        if(s1 == "joker JOKER" || s2 == "joker JOKER") // 排除所有可能为王的情况;
        {
            cout<<"joker JOKER"<<endl;
            continue;
        }
        if((s1.size() == 5 && (s1[0] == 'j' || s1[0] == 'J'))&& (s2.size() == 5 && (s2[0] == 'j' || s2[0] == 'J')) )// 大小王比较
        {
            cout<<"JOKER"<<endl;
            continue;
        }
            
        else if((s1.size() == 5 && (s1[0] == 'j' || s1[0] == 'J')) || (s2.size() == 5 && (s2[0] == 'j' || s2[0] == 'J')) )// 王与单张比较
        {
            if(s1[0] == 'J' || s2[0] == 'J')
            {
            cout<<"JOKER"<<endl;
            continue;
            }
            else
            {
            cout<<"joker"<<endl;
            continue;
            }
        }
        int len1 =  0, len2 = 0;
        for(int i = 0 ; i < s1.size(); i++)
            if(s1[i] == ' ')
                len1++;
        for(int i = 0 ; i < s2.size(); i++)
            if(s2[i] == ' ')
                len2++;
        if(len1 == 3 && len2 == 3)    // 炸弹之间的比较
        {
            if(cmp(s1)>cmp(s2))
                cout<<s1<<endl;
            else
                cout<<s2<<endl;
            continue;
        }
        else if(len1 == 3 || len2 == 3)    //一方有炸弹的情况
        {
            if(len1 == 3)
                cout<<s1<<endl;
            else
                cout<<s2<<endl;
            continue;
        }
        else if(len1 == len2){    //   单张,两张,三张,五张之间的比较;
            if(cmp(s1)>cmp(s2))
                cout<<s1<<endl;
            else
                cout<<s2<<endl;
        }
        else                    //    比较不了的时候
            cout<<"ERROR"<<endl;
    }
        
    
    return 0;
}