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 大家应该都会玩“锤子剪刀布”的游 ...
随机推荐
- Jquery封装(学习)01
1.在开发过程中,我们有时候会经常用到重复的jquey代码,最常见的是我们那里需要就再哪里复制粘贴,这样大大增加了冗余代码,维护起来也不方便.我们何不把共同的jquery代码封装起来,哪里需要就哪里调 ...
- BZOJ5473: 仙人掌
传送门 首先,所有连通块的个数的期望再减去每个点孤立的概率就是答案. 设 \(d_i\) 表示 \(i\) 的度数,那么每个点孤立的概率为 \(\frac{1}{2^{d_i}}\) 考虑计算所有连通 ...
- cf97D. Robot in Basement(模拟 bitset)
题意 题目链接 Sol 接下来我的实现方式和论文里不太一样 然后用bitset优化,上下走分别对应着右移/左移m位,左右走对应着右移/左移1位 我们可以直接预处理出能走的格子和不能走的格子,每次走的时 ...
- element-ui Pagination组件源码分析整理笔记(七)
element-ui源码的版本是2.4.9 pagination.js import Pager from './pager.vue'; import ElSelect from 'element-u ...
- python中的赋值与深浅拷贝的区别
import copy lt = [1, 2, [3, 4]] # 赋值会增加一个引用,访问的都是同一数据 # lt2 = lt # 浅拷贝:只拷贝对象本身,里面的元素只会增加一个引用 lt2 = l ...
- css改变input显示的样式
设置input宽高,边框大小颜色,背景颜色,字体颜色,字体大小,背景图片,去除蓝色边框. input{width:80px ;height:30px;border:1px solid red;colo ...
- Android长按事件和点击事件 冲突问题
长按点击的时候默认会触发点击事件,android系统是优先点击的,并且没有返回值:而长按事件是有返回值的,如果返回false,两个事件都会有响应,如果返回true则只响应长按事件.
- 【jdk源码2】Objects源码学习
在学习上一个类TreeMap的时候,提到了这个类,这个类是jdk1.7新增的,里面有很多实用的方法.就是一个工具类,熟悉以后,如果里面有已经实现的方法,那么就不要再去实现了,省时省力省测试. 一.简单 ...
- 构建第一个SpringBoot工程
学习和使用 SpringBoot 有一段时间了,现在开始陆陆续续会总结归纳 SpringBoot 学习中遇到的相关知识点. SpringBoot 设计目的是用来简化新Spring应用的初始搭建以及开发 ...
- ORACLE-SQL微妙之处
本文总结一下平时经常使用的SQL语句以及一些ORACLE函数的微妙之处.欢迎大家多多补充平时最常用的SQL语句,供大家学习参考. SQL> select * from temp2; NAME S ...