本文主要是介绍PAT 1018. 锤子剪刀布 (20),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目概述:
大家应该都会玩“锤子剪刀布”的游戏,
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第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
思路:
注意比较的时候就好了
#include<stdio.h>char a, b; //to save two people's gesture
int win = 0, lost = 0; //to save the time about win,lost and the draw
int x[5] = { 0 }, y[5] = { 0 }; //[1] for scissors;[2] for hammer;[3] for cloth
int N;
int out[4];
int temp;int main() {scanf("%d", &N);temp = N;while ((a = getchar()) != '\n');while (temp--){char n;while ((n = getchar()) != ' ') {a = n;}while ((n = getchar()) != '\n') {b = n;}switch (a){case 'C':if (b == 'J') {x[2]++;win++;} if (b == 'B') {y[3]++;lost++;} break;case 'J':if (b == 'C') {y[2]++;lost++;}if (b == 'B') {x[1]++;win++;} break;case 'B':if (b == 'C') {x[3]++;win++;} if (b == 'J') {y[1]++;lost++;} break;}}printf("%d %d %d\n", win, N - win - lost, lost);printf("%d %d %d\n", lost, N - win - lost, win);out[1] = 'J';out[2] = 'C';out[3] = 'B';int tempx=-1, tempy = -1;if (x[1] > x[2] && x[1] > x[3])tempx = 1;if (x[2] >= x[1] && x[2] > x[3])tempx = 2;if (x[3] >= x[1] && x[3] >= x[2])tempx = 3;if (y[1] > y[2] && y[1] > y[3])tempy = 1;if (y[2] >= y[1] && y[2] > y[3])tempy = 2;if (y[3] >= y[1] && y[3] >= y[2])tempy = 3;printf("%c %c", out[tempx], out[tempy]);return 0;
}
这篇关于PAT 1018. 锤子剪刀布 (20)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!