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

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

输入格式:
输入第 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

思路参考了算法笔记的哈:

只想说一句:变量多的一定不要写错变量名........检查起来好难

#include<iostream>

using namespace std;

int change_c(char c) {
if (c == 'B') return 0;
if (c == 'C') return 1;
if (c == 'J') return 2;
}
int main() {
int n;//总共几轮
cin >> n;
int wina = 0, winb = 0, ping = 0;//胜利次数
char c[3] = { 'B','C','J' };
int at[3] = { 0 }, bt[3] = { 0 };//统计a,b用石头剪刀布的赢的次数的数组,a[0]表示用布赢的次数
int a, b;
char ca, cb;//输入的a,b
for (int i = 0; i < n; i++) {
cin >> ca >> cb;
a = change_c(ca), b = change_c(cb);
if ((a + 1) % 3 == b) {
//a胜
wina++;
at[a]++;//统计a用石头剪刀布的赢的次数
}
else if (a == b) {
ping++;
}
else {
//b赢
winb++;
bt[b]++;
}
}
cout << wina << " " << ping << " " << winb << endl;
cout << winb << " " << ping << " " << wina << endl;
//预测下次要出什么
int maxa = 0, maxb = 0; for (int i = 0; i < 3; i++) {
if (at[i] > at[maxa]) maxa = i;
if (bt[i] > bt[maxb]) maxb = i;
} cout << c[maxa] << " " << c[maxb] << endl;
std::system("pause");
return 0;
}

最新文章

  1. Error : An error occurred while creating the WebJob schedule: Response status code does not indicate success: 409 (Conflict).
  2. vs2013的asp.net 管理
  3. How to drop a PostgreSQL database if there are active connections to it?
  4. [引]ASP.NET MVC 4 Content Map
  5. 去掉有序数组中重复数字 原地 leetcode java (最简单的方法)
  6. 未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib 错误的解决办法
  7. ubuntu 安装mysql, 以及全然又一次安装的方法
  8. ISO/IEC 14443协议浅谈
  9. PHP数字价格格式化,保留两位小数
  10. RabbitMQ入门-Routing直连模式
  11. SpringCloud教程 | 第四篇:断路器(Hystrix)
  12. 洛谷P2740 草地排水
  13. zTree基础
  14. bzoj 3143 随机游走
  15. Java并发容器之阻塞队列BlockingQueue
  16. RHPAM 7.2安装
  17. 一个免费ss网站的数据爬取过程
  18. WPF通过&lt;x:Array&gt;直接为ListBox的ItemsSource赋值
  19. WC2017 游记
  20. 【C语言】C语言程序所占内存分类

热门文章

  1. python列表的操作(添加)
  2. laravel 根据字段不同值做不同查询
  3. MacBook苹果电脑绕过BootCamp安装Win7双系统
  4. vue3-异步组件的使用
  5. ES学习总结
  6. 前端面试题(js)
  7. 《Mybatis 手撸专栏》第1章:开篇介绍,我要带你撸 Mybatis 啦!
  8. Java 代码注意细节
  9. Debian11系统安装
  10. protocol 协议语言介绍