1018.锤子剪刀布

2023-10-31 07:32
文章标签 锤子 剪刀 1018

本文主要是介绍1018.锤子剪刀布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1018.锤子剪刀布

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

输入格式:

输入第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

C++版本一:

#include<iostream>
#include<string>
using namespace std;
/*返回甲方的胜负情况,1为胜,0为负,2为平
甲输就是乙胜*/
int cmp(char a, char b) {if ((a =='C'&&b =='J')||(a=='J'&&b=='B')||(a=='B'&&b=='C'))return 1;if (a == b)return 2;elsereturn 0;
}
int main() {int n=0;char a, b;int count_s = 0,count_p=0,count_f=0;//甲方胜的次数,平局次数,输次数int count_c = 0, count_j = 0, count_b = 0;int count_c0 = 0, count_j0 = 0, count_b0 = 0;char A, B;//记录胜出多的手势int count_temp;cin>>n;while (n--) {cin >> a >> b;if (cmp(a, b) == 1) {count_s++;if (a == 'C') count_c++;if (a == 'J') count_j++;if (a == 'B') count_b++;}if (cmp(a, b) == 2) {count_p++;}if (cmp(a, b) == 0) {count_f++;if (b == 'C') count_c0++;if (b == 'J') count_j0++;if (b == 'B') count_b0++;}}A = count_c >= count_j ? 'C' : 'J';count_temp = count_c >= count_j ? count_c : count_j;if (count_b >= count_temp) {A = 'B';}B = count_c0 >= count_j ? 'C' : 'J';//若相等则取序列小的字母count_temp = count_c0 >= count_j0 ? count_c0 : count_j0;if (count_b0 >= count_temp) {B = 'B';}cout << count_s <<" "<< count_p <<" "<< count_f << endl;cout << count_f <<" "<< count_p <<" "<< count_s << endl;cout << A << " " <<B<< endl;return 0;
}


这篇关于1018.锤子剪刀布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/313788

相关文章

POJ 1018 Communication System(枚举)

题目: http://poj.org/problem?id=1018 题解: 我们可以枚举每一种B可能的值,然后寻找每一行里大于等于B里最小的P。 代码: #include<cstdio>#include<stdlib.h>struct in{double B,P;}a[101][101];double b[10001];int t[101];int cmp(cons

连载:面向对象葵花宝典:思想、技巧与实践(4) - 面向对象是瑞士军刀还是一把锤子?

为什么要面向对象? 可以说,面向过程和计算机是如影随形的。从计算机诞生之日起,面向过程就是占据着主导地位的思想,即使到了现在,面向过程也是无处不在的,C语言、操作系统、协议栈、驱动系统,都是面向过程的代表。  那为什么还会有面向对象的诞生并流行呢?当然是面向过程存在某些不足,如果面向过程足够好,谁还费心费力的去搞另外一套呢?  前面我们提到,面向过程是一种机器的思想,

杭电1018题

本以为可以用 #include<iostream> #include<string> using namespace std; #define max 10000000 int f1[max]; int main() { int n, a; cin >> n;//测试 个数 while (n--) { cin >> a; memset(f1, 0,

SDUTOJ 1018 骨牌铺方格 递推

题目描述 在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图: 输入 输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0< n<=50)。 输出 对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。 示例输入 132

携程编程大赛 (预赛第二场)第一题【剪刀石头布】

Problem Description 现有M个人一起玩剪刀石头布,以1-M编号,每人出一种,出过不再改变,但是我们并不知道它到底是哪一种。 (其中石头赢剪刀,剪刀赢布,布赢石头,一样则平) 裁判用两种说法对这M个人所构成的输赢关系进行描述:  一:"1 A B",表示第A个人和第B个人出的一样。  二:"2 A B",表示第A个人赢第B个人。  裁判对M个人,用以上两种说法,连说

[数据集][目标检测]锤子检测数据集VOC+YOLO格式1510张1类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1510 标注数量(xml文件个数):1510 标注数量(txt文件个数):1510 标注类别数:1 标注类别名称:["hammer"] 每个类别标注的框数: hammer 框数 = 1955 总框数:1955 使用

AcWing 1801:蹄子剪刀布 ← 模拟题

【题目来源】https://www.acwing.com/problem/content/1803/【题目描述】 你可能听说过“石头剪刀布”的游戏。 这个游戏在牛当中同样流行,它们称之为“蹄子剪刀布”。 游戏的规则非常简单,两头牛相互对抗,数到三之后各出一个表示蹄子,剪刀或布的手势。蹄子赢剪刀,剪刀赢布,布赢蹄子。 例如,第一头牛出“蹄子”手势,第二头牛出“布”手势,则第二头牛获胜。 如果两头牛出

PAT B1018.锤子剪刀布

题目描述 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图3-1所示。    现给出两人的交锋记录,请统计双方的胜、平、负次数,并给出双方分别出什么手势的胜算最大。输入格式 第一行给出正整数N(≤10'),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第一个学母代表甲方,第二个字母代表乙方,中间

奋战杭电ACM(DAY12)1018

又是一道数学题,用对数求位数 Big Number #include <iostream>#include <cmath>using namespace std;int main(){int n,m;double sum,digit;while(cin >> n){while(n>=1){cin >> m;sum=0;for(int i=1; i<=m; i++){digit=lo

1018:奇怪的信

<h1 style="padding: 10px 0px 0px; margin: 0px; clear: both; font-family: 'Microsoft Yahei'; background-color: rgb(245, 245, 245);">1018:奇怪的信<span class="y" style="padding: 0px; margin: 0px; float: rig