石头剪刀布

有三个人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 333=27种。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值