有三个人A,B,C玩石头剪刀布的游戏。游戏的规则是布可以赢石头,石头可以赢剪刀,剪刀可以赢布。如果三个人出的是同一种手势或三个人出的手势都不相同,则认为是平局,平局每人得1分;如果一个人赢了另外两个人,则得2分,另两个人各自得-1分;若果一个人输给了另两个人,则他得-2分,另两个人各得1分。现在已知A,B,C三人现在的得分是X,Y,Z,给出当前这一局A,B,C三人的手势,问这一局过后他们的得分是多少?
第一行三个整数,表示A,B,C三人现在的得分。
第二行三个字符,相邻两个字符之间用空格隔开。字符’X’表示剪刀、'S’表示石头,'P’表示布。
一行:3个整数,中间有1个空格间隔,这一局过后A,B,C分别的得分是多少
样例输入
15 20 30
X S S
样例输出
13 21 31
Rock是石头,Scissors是剪刀,Paper是布。
在看到这道题后,我不禁眼前一黑,because这道题出自选择结构!!!!所以十分简单且十分难,要把三个人石头剪刀布的全部情况算出来,
cpp如下:
#include <iostream>
using namespace std;
int a, b, c, d, e;
char n, m, k;
int main() {
cin >> a >> b >> c >> n >> m >> k;
if ((n == m && m == k) || (n != m && m != k && n != k)) {
a++;
b++;
c++;
cout << a << " " << b << " " << c;
return 0;
}
if (n == 'S' && m == 'S' && k == 'P') {
a--;
b--;
c += 2;
}
if (n == 'S' && m == 'S' && k == 'X') {
a++;
b++;
c -= 2;
}
if (n == 'X' && m == 'S' && k == 'X') {
a--;
b += 2;
c--;
}
if (n == 'X' && m == 'S' && k == 'S') {
a -= 2;
b++;
c++;
}
if (n == 'P' && m == 'S' && k == 'S') {
a += 2;
b--;
c--;
}
if (n == 'P' && m == 'S' && k == 'P') {
a++;
b -= 2;
c++;
}
if (n == 'S' && m == 'X' && k == 'X') {
a += 2;
b--;
c--;
}
if (n == 'S' && m == 'X' && k == 'S') {
a++;
b -= 2;
c++;
}
if (n == 'X' && m == 'X' && k == 'S') {
a--;
b--;
c += 2;
}
if (n == 'X' && m == 'X' && k == 'P') {
a++;
b++;
c -= 2;
}
if (n == 'P' && m == 'X' && k == 'P') {
a--;
b += 2;
c--;
}
if (n == 'P' && m == 'X' && k == 'X') {
a -= 2;
b++;
c++;
}
if (n == 'S' && m == 'P' && k == 'P') {
a -= 2;
b++;
c++;
}
if (n == 'S' && m == 'P' && k == 'S') {
a--;
b += 2;
c--;
}
if (n == 'X' && m == 'P' && k == 'P') {
a += 2;
b--;
c--;
}
if (n == 'X' && m == 'P' && k == 'X') {
a++;
b -= 2;
c++;
}
if (n == 'X' && m == 'X' && k == 'P') {
a++;
b++;
c -= 2;
}
if (n == 'P' && m == 'P' && k == 'X') {
a--;
b--;
c += 2;
}
if (n == 'P' && m == 'P' && k == 'S') {
a++;
b++;
c -= 2;
}
cout << a << " " << b << " " << c;
}
/*
字符'X'表示剪刀、'S'表示石头,'P'表示布。*/
So easy…😊浅浅算一下 3 ∗ 3 ∗ 3 = 27 3*3 *3=27 3∗3∗3=27种。。。。。。。