1018 锤子剪刀布 (20 分)(C++)

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

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


image.png


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


输入格式:


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


输出格式:


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


输入样例:



1. 10
2. C J
3. J B
4. C B
5. B B
6. B C
7. C C
8. C B
9. J B
10. B C
11. J J


结尾无空行


输出样例:


5 3 2
2 3 5
B B

题目简单,理清思路就好了

#include <iostream>
using namespace std;
struct stj {
  char a;
  char b;
};
int main() {
  int n;
  cin >> n;
  stj sb[n];
  int a1, b1, c1, a2, b2, c2;
  a1 = b1 = c1 = a2 = b2 = c2 = 0;
  int C1, j1, B1, C2, j2, B2;
  C1 = j1 = B1 = C2 = j2 = B2 = 0;
  for (int i = 0; i < sizeof(sb) / sizeof(sb[0]); i++) {
    cin >> sb[i].a >> sb[i].b;
  }
  for (int i = 0; i < sizeof(sb) / sizeof(sb[0]); i++) {
    if (sb[i].a == sb[i].b) {
      b1++;
      b2++;
    } else if ((sb[i].a == 'C' && sb[i].b == 'J') || (sb[i].a == 'J' && sb[i].b == 'B') || (sb[i].a == 'B'
               && sb[i].b == 'C')) {
      a1++;
      c2++;
      if (sb[i].a == 'B')
        B1++;
      if (sb[i].a == 'J')
        j1++;
      if (sb[i].a == 'C')
        C1++;
    } else if ((sb[i].b == 'C' && sb[i].a == 'J') || (sb[i].b == 'J' && sb[i].a == 'B') || (sb[i].b == 'B'
               && sb[i].a == 'C')) {
      a2++;
      c1++;
      if (sb[i].b == 'B')
        B2++;
      if (sb[i].b == 'J')
        j2++;
      if (sb[i].b == 'C')
        C2++;
    }
  }
  printf("%d %d %d\n", a1, b1, c1);
  printf("%d %d %d\n", a2, b2, c2);
  int max1 = (C1 > j1) ? C1 : j1;
  max1 = (max1 > B1) ? max1 : B1;
  int max2 = (C2 > j2) ? C2 : j2;
  max2 = (max2 > B2) ? max2 : B2;
  if (max1 == B1)
    printf("%c ", 'B');
  if (max1 == C1 && max1 != B1)
    printf("%c ", 'C');
  if (max1 == j1 && max1 != B1 && max1 != C1)
    printf("%c ", 'J');
  if (max2 == B2)
    printf("%c", 'B');
  if (max2 == C2 && max2 != B2)
    printf("%c", 'C');
  if (max2 == j2 && max2 != B2 && max2 != C2)
    printf("%c", 'J');
}


相关文章
|
6月前
1018 锤子剪刀布 (20 分)
1018 锤子剪刀布 (20 分)
小游戏(猜数字、剪刀石头布) 2021-01-03
小游戏(猜数字、剪刀石头布) 2021-01-03
|
7月前
|
算法
联想算法题-石头剪刀布
联想算法题-石头剪刀布
95 0
|
存储 JavaScript 索引
基于 HTML+CSS+JS 的石头剪刀布游戏
基于 HTML+CSS+JS 的石头剪刀布游戏
146 0
|
Shell
脚本编写 剪刀 、 石头、布游戏
脚本编写 剪刀 、 石头、布游戏
132 1
|
算法
石头剪刀布 L1-044 稳赢 15分
石头剪刀布 L1-044 稳赢 15分
|
弹性计算 数据安全/隐私保护 Python
石头剪刀布
本场景介绍如何在阿里云ECS环境下用Python实现一款人机对战小游戏:石头剪刀布。
[普及练习场] 生活大爆炸版石头剪刀布
[普及练习场] 生活大爆炸版石头剪刀布
176 0
|
测试技术 Python
PTA 1018 锤子剪刀布 (20 分)
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示
159 0
PAT刷题笔记-PAT乙1018-锤子剪刀布
PAT刷题笔记-PAT乙1018-锤子剪刀布
137 0
PAT刷题笔记-PAT乙1018-锤子剪刀布