• 骑士的对决题解

守护骑士可以有两个武器,远征骑士只有一个武器,因为武器是平等的,并且相互克制,我们发现守卫骑士在有两个武器的情况下是不可能输的,因为守护骑士是不想输的,所以结果肯定是守护骑士赢远征骑士或者守护骑士和远征骑士平局.

//第一种写法,以守护骑士为视角,将全部的结果罗列出来.比较长
#include<iostream>
using namespace std;

int main () {
    char a, b;
    cin >> a >> b;
    char c;
    cin >> c;
    if ((a == 'S' && b == 'J')|| (a == 'J' && b == 'S')) {
        if (c == 'B')
            cout << "pmznb" << endl;
        if (c == 'S')
            cout << "lyrnb"<< endl;
        if (c == 'J')
            cout << "pmznb" << endl;
    }
     if ((a == 'B' && b == 'J')|| (a == 'J' && b == 'B')) {
        if (c == 'B')
            cout << "pmznb" << endl;
        if (c == 'S')
            cout << "pmznb" << endl;
        if (c == 'J')
            cout << "lyrnb"<< endl;
    }
     if ((a == 'S' && b == 'B')|| (a == 'B' && b == 'S')) {
        if (c == 'B')
            cout << "lyrnb"<< endl;
        if (c == 'S')
            cout << "pmznb" << endl;
        if (c == 'J')
            cout << "pmznb" << endl;
    }
    return 0;
}

第二种:

//第二种,代码比较.
#include<iostream>
using namesapce std;
int main()
{
    char a,b,c;
    cin >> a >> b;
    cin >> c;
    if(c=='S'&&(a=='B'||b=='B'))
        printf("pmznb");
    else if(c=='J'&&(a=='S'||b=='S'))
        printf("pmznb");
    else if(c=='B'&&(a=='J'||b=='J'))
        printf("pmznb");
    else 
        printf("lyrnb"); 
}