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

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第 1 行给出正整数 N(≤),即双方交锋的次数。随后 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 <stdio.h>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
int cmp(char c1, char c2){
if (c1 == c2)return ;
else if (c1 == 'C'){
if (c2 == 'J')return ;
else return -;
}
else if (c1 == 'J'){
if (c2 == 'C')return -;
else return ;
}
else{
if (c2 == 'C')return ;
else return -;
}
}
int main(){
int n;
char c1, c2;
int j_p = , j_l = , y_p = , y_l = ;
int j_w[] = { };
int y_w[] = { };
scanf("%d", &n);
getchar();
for (int i = ; i<n; i++){ scanf("%c %c", &c1, &c2);
getchar(); int res = cmp(c1, c2);
if (res == ){
j_p++;
y_p++;
}
else if (res == ){
y_l++;
if (c1 == 'B')j_w[]++;
else if (c1 == 'C')j_w[]++;
else j_w[]++;
}
else{
j_l++;
if (c2 == 'B')y_w[]++;
else if (c2 == 'C')y_w[]++;
else y_w[]++;
}
}
printf("%d %d %d\n", j_w[] + j_w[] + j_w[], j_p, j_l);
printf("%d %d %d\n", y_w[] + y_w[] + y_w[], y_p, y_l);
int max_j = , max_y = ;
for (int i = ; i<; i++){
if (j_w[i]>max_j)max_j = j_w[i];
if (y_w[i]>max_y)max_y = y_w[i];
} for (int i = ; i < ; i++){
if (j_w[i] == max_j){
if (i == )printf("B ");
else if (i == )printf("C ");
else printf("J ");
max_j = ;
}
}
for (int i = ; i < ; i++){
if (y_w[i] == max_y){
if (i == )printf("B");
else if (i == )printf("C");
else printf("J");
max_y = ;
}
}
system("pause");
}
注意点:题目逻辑很简单,出现问题在读入输入数据的时候,读字符出现问题,scanf(“%c %c”,&c1,&c2),看起来没问题,后面一定要加一个getchar来读换行符,包括读n后面也要加getchar,读换行符,否则读入的字符就变成c1是换行符了。用 cin 就不会存在这些问题了。
PAT B1018 锤子剪刀布 (20 分)的更多相关文章
- PAT B1018.锤子剪刀布(20)
一个没有通过,不知道为何 #include <cstdio> int change(char c) { if(c == 'B') return 0; if(c == 'C') return ...
- PAT Basic 1018 锤子剪刀布 (20 分)
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 ...
- PAT 1018. 锤子剪刀布 (20)
现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第1行给出正整数N(<=105),即双方交锋的次数.随后N行,每行给出一次交锋的信息,即 ...
- B1018 锤子剪刀布 (20分)
B1018 锤子剪刀布 (20分) 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势. 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. ...
- 【PAT】1018 锤子剪刀布 (20)(20 分)
1018 锤子剪刀布 (20)(20 分) 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算 ...
- PAT 1018 锤子剪刀布(20)
1018 锤子剪刀布 (20)(20 分) 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方 ...
- PAT乙级 1018. 锤子剪刀布 (20)
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
- 牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)
锤子剪刀布 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出 ...
- PAT 乙级 1018 锤子剪刀布 (20) C++版
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
随机推荐
- Android组件化搭建
什么是组件化 为了降低项目耦合性,在Android工程中如何实施,目前有两种途径,也是两大流派,一个是组件化,一个是插件化.在这里只介绍组件化,插件化暂不介绍 正常的APP只有一个applicatio ...
- php面向对象高级-魔术方法与迭代器
1,魔术方法__set与__get, __call >这些魔术方法,将在相关的属性或者方法不存在时调用 >函数原型 .function __set( $property, $value ) ...
- JS 为什么在涉及到模块开发this的时候使用类似 self = this 的形式 p7
JS 动态作用域(调用栈)实际上也没有准确说明的,大多数我们使用对多和认知上大多是词法作用域,但是this的机制跟动态作用域很像. var a = 2; function fn(){ console. ...
- 记一次MySQL安装出现的坑爹问题。。。
关键词:mysql安装 msvcr100.dll缺失 vc++2010 : win10系统首次安装mysql,图方便下载了图形界面的安装包(5.6.4),本以为小事一桩:装一半失败.卸载清注册表.重 ...
- js-ES6学习笔记-数组的扩展
1.Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map). 实际应用中 ...
- Echarts地图绘制(散点,色卡)
echarts绘制地图时,提供了js内部注册,也提供了json数据手动注册,这两种都可以绘制对应地图,但有一点不同的是,js内部只注册了中国地图和世界地图,而json数据提供了世界,中国,中国城市的数 ...
- iframe页面刷新问题
1.问题:当iframe的页面加载过再关闭之后,如果iframe的src没有发生变化,js不会重新加载,再次打开页面不会刷新: 2.解决方法:关闭页面时清空src,再次打开时即可重新加载最新数据. $ ...
- KCF跟踪算法 入门详解
一.算法介绍 KCF全称为Kernel Correlation Filter 核相关滤波算法.是在2014年由Joao F. Henriques, Rui Caseiro, Pedro Martins ...
- Java java jdk在Linux下安装与环境变量的配置
java jdk在Linux下安装与环境变量的配置 by:授客 QQ:1033553122 linux环境:CentOS-6.0-x86_64-bin-DVD1.iso [root@localhost ...
- Android--字符串和16进制相互转化(解决中文乱码)
import java.io.ByteArrayOutputStream; /** * Created by Administrator on 2016/2/2. * -----------16进制和 ...