• 1018 锤子剪刀布


    大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

    现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

    输入格式:
    输入第 1 行给出正整数 N(≤10^​5),即双方交锋的次数。随后 N 行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C 代表“锤子”、J 代表“剪刀”、B 代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。

    输出格式:
    输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有 1 个空格。如果解不唯一,则输出按字母序最小的解。

    输入样例:
    10
    C J
    J B
    C B
    B B
    B C
    C C
    C B
    J B
    B C
    J J



    输出样例:
    5 3 2
    2 3 5
    B B

    剪刀石头步的规则是个循环,我何不构造一个数组a[3]={1,2,0},只要a[x]==y,就说明x是赢y的。

    #include <iostream>
    #include<string>
    #include<stdio.h>
    #include<algorithm>
    #include<math.h>
    #include<map>
    #include<vector>
    using namespace std;
    int tans(char a) {
        if (a == 'B')
            return 0;
        else if (a == 'C')
            return 1;
        else if (a == 'J')
            return 2;
    }
    
    int main()
    {
        int win[3] = { 1,2,0};//这里用int型数组就是构造一个循环。
        int n, aw, bw, nw;
        aw = bw = nw = 0;
        int mt[2][3] = { 0 };
        cin >> n;
        char a[100010], b[100010];
        for (int i = 0; i < n; i++) {
            cin >> a[i] >> b[i];
        }
        for (int i = 0; i < n; i++) {
            if (a[i] == b[i])
                nw++;
            else {
                int ta = tans(a[i]), tb = tans(b[i]);
                if (win[ta]== tb) {//满足这个关系说明甲赢了
                    mt[0][ta]++;
                    aw++;
                }
                else {
                    mt[1][tb]++;//否则乙赢
                    bw++;
                }
            }
    
        
        }
        cout << aw << " " << nw << " " << n - aw - nw<<endl;
        cout << bw << " " << nw << " " << n - bw - nw << endl;
        int max=0;
        char str[4]="BCJ";
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3; j++) {
                if (mt[i][max] < mt[i][j])
                    max = j;
            }
            cout <<str[max];
            if (i == 0)cout << " ";
            max = 0;
            
        }
    
    }
  • 相关阅读:
    SpringBoot自动装配
    Docker容器添加对外映射端口
    Day03 腿部训练
    Day04 胸 + 肩部训练
    Day02 背 + 二头肌
    @Transactional注解失效场景
    Docker快速安装RocketMQ
    Linux 命令 速记
    Window Phone 7 设备的方向
    使用异步代理+IAsyncResult 调用函数
  • 原文地址:https://www.cnblogs.com/kalicener/p/12452418.html
Copyright © 2020-2023  润新知