PAT1018 锤子剪刀布
2024-10-06 07:41:17
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。 输入格式:
输入第 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
思路参考了算法笔记的哈:
只想说一句:变量多的一定不要写错变量名........检查起来好难
#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;
}
最新文章
- Error : An error occurred while creating the WebJob schedule: Response status code does not indicate success: 409 (Conflict).
- vs2013的asp.net 管理
- How to drop a PostgreSQL database if there are active connections to it?
- [引]ASP.NET MVC 4 Content Map
- 去掉有序数组中重复数字 原地 leetcode java (最简单的方法)
- 未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib 错误的解决办法
- ubuntu 安装mysql, 以及全然又一次安装的方法
- ISO/IEC 14443协议浅谈
- PHP数字价格格式化,保留两位小数
- RabbitMQ入门-Routing直连模式
- SpringCloud教程 | 第四篇:断路器(Hystrix)
- 洛谷P2740 草地排水
- zTree基础
- bzoj 3143 随机游走
- Java并发容器之阻塞队列BlockingQueue
- RHPAM 7.2安装
- 一个免费ss网站的数据爬取过程
- WPF通过<;x:Array>;直接为ListBox的ItemsSource赋值
- WC2017 游记
- 【C语言】C语言程序所占内存分类