codeup3.1简单模拟——锤子剪刀布

Description

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

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

Input

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

Output

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

Sample Input

10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J

Sample Output

5 3 2
2 3 5
B B

自己的代码用计数器的方法做,太麻烦了,用数组会好些

#include<iostream>
using namespace std;
int play(char c1,char c2) //对甲来说,是输还是赢
{
    if('C'==c1)
    {
        switch(c2)
        {
            case 'C':
                return -1;
                break;
            case 'J':
                return 1;
                break;
            case 'B':
                return 0;
                break;
        }
    }
    else if('J'==c1)
    {
        switch(c2)
        {
            case 'C':
                return 0;
                break;
            case 'J':
                return -1;
                break;
            case 'B':
                return 1;
                break;
        }
    }
    else if('B'==c1)
    {
        switch(c2)
        {
            case 'C':
                return 1;
                break;
            case 'J':
                return 0;
                break;
            case 'B':
                return -1;
                break;
        }
    }
}
char name(int winC,int winJ,int winB)
{
    if(winB>=winC&&winB>=winJ) return 'B';
    else if(winC>winB&&winC>=winJ) return 'C';
    else if(winJ>winB&&winJ>winC) return 'J';
}
int main(void)
{
    int n;
    while(cin>>n)
    {
        int win1=0,draw1=0,lost1=0;
        int win2=0,draw2=0,lost2=0;
        int winC1=0,winJ1=0,winB1=0;
        int winC2=0,winJ2=0,winB2=0;
        while(n--)
        {
            char c1,c2;
            cin>>c1>>c2;
            int result=play(c1,c2);
            if(result>0) 
            {
                win1++;
                lost2++;
                switch(c1)
                {
                    case 'C': 
                        winC1++;
                        break;
                    case 'J':
                        winJ1++;
                        break;
                    case 'B':
                        winB1++;
                        break;
                }
            }
            else if(!result) 
            {
                win2++;
                lost1++;
                switch(c2)
                {
                    case 'C': 
                        winC2++;
                        break;
                    case 'J':
                        winJ2++;
                        break;
                    case 'B':
                        winB2++;
                        break;
                }
            }
            else if(result<0)
            {
                draw1++;
                draw2++;
            }
        }
        printf("%d %d %d\n",win1,draw1,lost1);
        printf("%d %d %d\n",win2,draw2,lost2);
        printf("%c ",name(winC1,winJ1,winB1));
        printf("%c\n",name(winC2,winJ2,winB2));
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容