zoukankan      html  css  js  c++  java
  • B1018 锤子剪刀布 (20分)

    B1018 锤子剪刀布 (20分)

    大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势.
    现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

    输入格式:

    输入第 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
    

    思路

    将3个字母对应成3个数字0,1,2,然后取模循环即可,类似循环队列的思想。
    注意在设置对应时,就考虑字母序,最后以字母序最低的为默认值,只有赢得的次数更多才能取代地位
    注意数组初始化,对于c++,一维数组,可以这样,自动全部置为0
    int a[5]={0};

    AC代码

    /*
    0->1
    1->2
    2->0
    (i+1)%3
    这样的前进序列构成循环,如果刚好对比数与前进位相同,那么可以定义为输或赢 
    */
    #include<bits/stdc++.h>
    using namespace std;
    int main(void){
    	map<char,int> p;
    	p['B'] = 0;
    	p['C'] = 1;
    	p['J'] = 2;
    	char mp[3] = {'B', 'C', 'J'};
    	char a,b;
    	int n,yeah1=0,yeah2=0;
    	scanf("%d",&n);
    	int time = n;
    	int sheng1[3]={0};
    	int sheng2[3]={0}; 
    	while(n--){
    		getchar();
    		scanf("%c %c",&a,&b);/*0<1 1<2 2<0*//*0->1 2 1 2 0*/
    		if(p[b]==(p[a]+1) % 3){/*甲方赢了*/
    			yeah1++;
    			/*要记录此刻是谁帮甲赢了此局,同时要有每一次的记录*/
    			sheng1[p[a]]++;
    		}
    		else if(p[a] != p[b]){/*平手*/
    			yeah2++;
    			sheng2[p[b]]++;
    		}
    	}
    	printf("%d %d %d
    ", yeah1, time-yeah1-yeah2,yeah2);
    	printf("%d %d %d
    ", yeah2, time-yeah1-yeah2,yeah1);
    	/*要对3个手势排序*/ 
    	int id1 = 0, id2 = 0;
        for(int i = 0; i < 3; i++) {
            if(sheng1[i] > sheng1[id1]) id1 = i;
            if(sheng2[i] > sheng2[id2]) id2 = i;
        }
        printf("%c %c
    ", mp[id1], mp[id2]);	
    	return 0;
    }
    
  • 相关阅读:
    当Django模型迁移时,报No migrations to apply 问题时
    django--各个文件的含义
    django--创建项目
    1013. Battle Over Cities (25)
    1011. World Cup Betting (20)
    1009. Product of Polynomials (25)
    1007. Maximum Subsequence Sum (25)
    1006. Sign In and Sign Out (25)
    1008. Elevator (20)
    1004. Counting Leaves (30)
  • 原文地址:https://www.cnblogs.com/lingr7/p/10301173.html
Copyright © 2011-2022 走看看