PAT1018 锤子剪刀布
题目
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式
输入第 1 行给出正整数N(≤105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C
代表“锤子”、J
代表“剪刀”、B
代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。
输出格式
输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有 1 个空格。如果解不唯一,则输出按字母序最小的解。
输入样例
1 2 3 4 5 6 7 8 9 10 11
| 10 C J J B C B B B B C C C C B J B B C J J
|
输出样例
思路
分别统计甲获得胜利,平局,失败的局数。然后同时设置一个大小为6的数组,代表甲乙分别出剪刀锤子布胜利的次数,统计完后去最大值输出。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #include <stdio.h> char cmp(int a, int b, int c) { int max = a > b ? a : b; max = max > c ? max : c; if(max == c) return 'B'; if(max == a) return 'C'; return 'J'; } int main(int argc, char const *argv[]) { int times, js = 0, jp = 0, jf = 0, a[6] = {0}; char j, y; scanf("%d", ×); getchar(); for(int i = 0; i < times; i++) { scanf("%c %c", &j, &y); getchar(); if(j == y) jp++; if(j == 'J' && y == 'C'){ jf++; a[3]++; } if(j == 'J' && y == 'B'){ js++; a[1]++; } if(j == 'B' && y == 'J'){ jf++; a[4]++; } if(j == 'B' && y == 'C'){ js++; a[2]++; } if(j == 'C' && y == 'B'){ jf++; a[5]++; } if(j == 'C' && y == 'J'){ js++; a[0]++; } } cmp(a[0], a[1], a[2]); printf("%d %d %d\n", js, jp, jf); printf("%d %d %d\n", jf, jp, js); printf("%c %c\n", cmp(a[0], a[1], a[2]), cmp(a[3], a[4], a[5])); return 0; }
|