• 1018 锤子剪刀布 (20分)


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

    FigCJB.jpg

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

    输入格式:

    输入第 1 行给出正整数 N(≤105),即双方交锋的次数。随后 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
    

    代码

    // 1018 锤子剪刀布.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    //
    #include <algorithm>
    #include <iostream>
    using namespace std;
    
    int cwin1 = 0, cwin2 = 0, jwin1 = 0, jwin2 = 0, bwin1 = 0, bwin2 = 0;
    int win1 = 0, even1 = 0, loss1 = 0;
    int win2 = 0, even2 = 0, loss2 = 0;
    
    void check(char a, char b) {
    	if (a == 'C' && b == 'C') {
    		even1++;
    		even2++;
    	}
    	if (a == 'C' && b == 'J') {
    		win1++;
    		cwin1++;
    		loss2++;
    	}
    	if (a == 'C' && b == 'B') {
    		win2++;
    		loss1++;
    		bwin2++;
    	}
    	if (a == 'J' && b == 'C') {
    		win2++;
    		loss1++;
    		cwin2++;
    	}
    	if (a == 'J' && b == 'J') {
    		even1++;
    		even2++;
    	}
    	if (a == 'J' && b == 'B') {
    		win1++;
    		jwin1++;
    		loss2++;
    	}
    	if (a == 'B' && b == 'C') {
    		win1++;
    		loss2++;
    		bwin1++;
    	}
    	if (a == 'B' && b == 'J') {
    		win2++;
    		loss1++;
    		jwin2++;
    	}
    	if (a == 'B' && b == 'B') {
    		even1++;
    		even2++;
    	}
    }
    int main()
    {
    	int n;
    	cin >> n;
    	char a, b;
    	for (int i = 0; i < n; i++) {
    		cin >> a >> b;
    		check(a, b);
    	}
    	//胜平负
    	cout << win1 << " " << even1 << " " << loss1 << endl;
    	cout << win2 << " " << even2 << " " << loss2 << endl;
    	int max1 = cwin1 > jwin1 ? cwin1 > bwin1 ? cwin1 : bwin1 : jwin1 > bwin1 ? jwin1 : bwin1;
    	if (bwin1 == max1) {
    		cout << "B ";
    	}
    	else if (cwin1 == max1) {
    		cout << "C ";
    	}
    	else {
    		cout << "J ";
    	}
    	int max2 = cwin2 > jwin2 ? cwin2 > bwin2 ? cwin2 : bwin2 : jwin2 > bwin2 ? jwin2 : bwin2;
    	if (bwin2 == max2) {
    		cout << "B";
    	}
    	else if (cwin2 == max2) {
    		cout << "C";
    	}
    	else {
    		cout << "J";
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    飞鱼星路由器配置端口映射
    Nginx 负载均衡配置和策略
    多个子路由器和主路由器怎么设置在同一个网段(变身无线交换机)
    iptables中DNAT、SNAT和MASQUERADE的理解
    图解正向代理、反向代理、透明代理
    CentOS 7 安装配置带用户认证的squid代理服务器
    MySQL 5.6下table_open_cache参数合理配置详解
    Linux SVN迁移备份的三种方法
    详解shell编程中2>&1用法
    安装配置OSA运维管理平台
  • 原文地址:https://www.cnblogs.com/ericling/p/12334302.html
Copyright © 2020-2023  润新知