描述
大家應(yīng)該都會(huì)玩“錘子剪刀布”的游戲:兩人同時(shí)給出手勢(shì)坡脐,勝負(fù)規(guī)則如圖所示:
現(xiàn)給出兩人的交鋒記錄笔横,請(qǐng)統(tǒng)計(jì)雙方的勝、平盯捌、負(fù)次數(shù),并且給出雙方分別出什么手勢(shì)的勝算最大。
輸入格式:
輸入第1行給出正整數(shù)N(<=105
)闸昨,即雙方交鋒的次數(shù)。隨后N行,每行給出一次交鋒的信息饵较,即甲拍嵌、乙雙方同時(shí)給出的的手勢(shì)。C代表“錘子”循诉、J代表“剪刀”横辆、B代表“布”,第1個(gè)字母代表甲方茄猫,第2個(gè)代表乙方狈蚤,中間有1個(gè)空格。
輸出格式:
輸出第1划纽、2行分別給出甲脆侮、乙的勝、平阿浓、負(fù)次數(shù)他嚷,數(shù)字間以1個(gè)空格分隔。第3行給出兩個(gè)字母芭毙,分別代表甲筋蓖、乙獲勝次數(shù)最多的手勢(shì),中間有1個(gè)空格退敦。如果解不唯一粘咖,則輸出按字母序最小的解。
輸入樣例:
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語(yǔ)言
#include <stdio.h>
char f(int arr[]);
int main(void)
{
int n;
scanf("%d", &n);
char ch;
getchar();
char a, b;
int draw = 0;
int a_win[3] = {0}; // 布侈百,石頭瓮下,剪刀
int b_win[3] = {0};
while (n--) {
scanf("%c %c", &a, &b);
getchar();
// printf("input is : %c %c\n", a, b);
if (a == b) {
draw++; // 平局
} else {
if (a == 'C') {
if (b == 'J') {
a_win[1]++;
} else {
b_win[0]++;
}
}
if (a == 'J') {
if (b == 'B') {
a_win[2]++;
} else {
b_win[1]++;
}
}
if (a == 'B') {
if (b == 'C') {
a_win[0]++;
} else {
b_win[2]++;
}
}
}
// printf("a = {%d, %d, %d}\n", a_win[0], a_win[1], a_win[2]);
// printf("b = {%d, %d, %d}\n", b_win[0], b_win[1], b_win[2]);
}
int a_win_cnt = a_win[0] + a_win[1] + a_win[2];
int b_win_cnt = b_win[0] + b_win[1] + b_win[2];
printf("%d %d %d\n", a_win_cnt, draw, b_win_cnt);
printf("%d %d %d\n", b_win_cnt, draw, a_win_cnt);
printf("%c %c\n", f(a_win), f(b_win));
return 0;
}
char f(int arr[])
{
int idx = 0;
idx = arr[1] > arr[idx] ? 1 : idx;
idx = arr[2] > arr[idx] ? 2 : idx;
if (idx == 0) {
return 'B';
} else if (idx == 1) {
return 'C';
} else {
return 'J';
}
}