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

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第 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
思路:
定义一个数组按{'B','C','J'}顺序存放,再定义一个函数change()来把a和b的字母转换为数字存放在k1和k2中。
判断输赢的方法:如果(k1+1)%3 == k2,则甲赢。如果k1 == k2,则平局。如果(k2 + 1)%3 == k1,则乙赢。
注意输入时scanf用%c会把换行符读入,导致程序运行错误。幸好用的是cin。
CODE:
#include<iostream>
using namespace std; int change(char c){
if(c=='B') return ;
if(c=='C') return ;
if(c=='J') return ;
} int main(){
int n;
char a,b;
int k1,k2;
int timeA[]={},timeB[]={};
int handA[]={},handB[]={};
char BCJ[] = {'B','C','J'};
cin>>n;
for(int i = ; i < n; i++){
cin>>a>>b;
k1 = change(a);
k2 = change(b);
if((k1 + ) % == k2){
timeA[]++;
timeB[]++;
handA[k1]++;
}else if(k1 == k2){
timeA[]++;
timeB[]++;
}else if((k2 + ) % == k1){
timeB[]++;
timeA[]++;
handB[k2]++;
}
}
cout<<timeA[]<<" "<<timeA[]<<" "<<timeA[]<<endl;
cout<<timeB[]<<" "<<timeB[]<<" "<<timeB[]<<endl;
int m1 = , m2 = ;
for(int i = ; i < ; i++){
if(handA[i] > handA[m1]) m1 = i;
if(handB[i] > handB[m2]) m2 = i;
}
cout<<BCJ[m1]<<" "<<BCJ[m2];
return ;
}
【算法笔记】B1018 锤子剪刀布的更多相关文章
- B1018 锤子剪刀布 (20分)
B1018 锤子剪刀布 (20分) 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势. 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. ...
- B1018. 锤子剪刀布
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第1行给出正整数N( ...
- PAT B1018 锤子剪刀布 (20 分)
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 ...
- PAT B1018.锤子剪刀布(20)
一个没有通过,不知道为何 #include <cstdio> int change(char c) { if(c == 'B') return 0; if(c == 'C') return ...
- 【PAT】B1018 锤子剪刀布
抄的柳婼小姐姐的,感觉三个数求最大那里用的真棒 #include <stdio.h> int main() { int N; scanf("%d", &N); ...
- 牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)
锤子剪刀布 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出 ...
- PAT1018 锤子剪刀布
大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...
- PAT (Basic Level) Practise:1018. 锤子剪刀布
[题目链接] 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第1行 ...
- PAT乙级 1018. 锤子剪刀布 (20)
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
随机推荐
- 读excle
1.OleDbConnection读取Excel ///<summary>///上传文件到临时目录中 ///</ummary>private void Upload(){ Ht ...
- 696. Count Binary Substrings统计配对的01个数
[抄题]: Give a string s, count the number of non-empty (contiguous) substrings that have the same numb ...
- Hadoop对数据仓库的影响
转载http://www.dwway.com/portal.php?mod=view&aid=9065 在过去三年,Hadoop生态系统已经大范围扩展,很多主要IT供应商都推出了Hadoop连 ...
- opennebula 创建镜像数据块
{","csrftoken":"f5454a02dea7b4a7d5d50b482a762b57"}
- 框架面试题:谈谈我对Spring IOC与DI的理解
IOC是一种叫做“控制反转”的设计思想. 1.较浅的层次——从名字上解析 “控制”就是指对 对象的创建.维护.销毁等生命周期的控制,这个过程一般是由我们的程序去主动控制的,如使用new关键字去创建一个 ...
- 编写高质量代码改善C#程序的157个建议——建议37:使用Lambda表达式代替方法和匿名方法
建议37:使用Lambda表达式代替方法和匿名方法 在建议36中,我们创建了这样一个实例程序: static void Main(string[] args) { Func<int, int, ...
- 百度图片API
转载请注明出处:http://blog.csdn.net/yuanwofei/article/details/16343743 一.通用api http://image.baidu.com/i?tn= ...
- C# Excel 操作
Excel数据到datagridview 里面 (流读取) System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog(); if (fd. ...
- C#静态类 静态方法与非静态方法比较
静态类 在类(class)上加入static修饰,表示该类无法被实例化,并将该类中,无法实例化变量或函数 静态类的主要特性 仅包含静态成员 无法实例化 静态类的本质,时一个抽象的密封类,所以不能被继承 ...
- Http报头中不能添加中文字符
今逢一Bug,如下: Invalid non-ASCII or control character in header: 0x6D4B 大意为:报头中有非法字符.故可将其编码后,set入Header, ...