守护骑士和远征骑士
B-骑士的对决
http://www.nowcoder.com/questionTerminal/ba5a580a67a44a1d919ea02e312090c8
- 骑士的对决题解
守护骑士可以有两个武器,远征骑士只有一个武器,因为武器是平等的,并且相互克制,我们发现守卫骑士在有两个武器的情况下是不可能输的,因为守护骑士是不想输的,所以结果肯定是守护骑士赢远征骑士或者守护骑士和远征骑士平局.
//第一种写法,以守护骑士为视角,将全部的结果罗列出来.比较长 #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"); }