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> struct a { int b; int c; int j; }; int main() { int N, i, A = 0, B = 0; char a = NULL, b = NULL; struct a p1 = { 0,0,0 }; struct a p2 = { 0,0,0 }; scanf("%d", &N); i = N; while (i--) { getchar(); scanf("%c %c", &a, &b); if ((a == 'B'&&b == 'C') || (a == 'C'&&b == 'J') || (a == 'J'&&b == 'B')) // 统计a赢的手势 { A++; if (a == 'B') p1.b++; if (a == 'C') p1.c++; if (a == 'J') p1.j++; } if ((b == 'B'&&a == 'C') || (b == 'C'&&a == 'J') || (b == 'J'&&a == 'B')) // 统计b赢的手势 { B++; if (b == 'B') p2.b++; if (b == 'C') p2.c++; if (b == 'J') p2.j++; } } printf("%d %d %d\n", A, N - A - B, B); //输出胜负平场次 printf("%d %d %d\n", B, N - A - B, A); if (p1.b >= p1.c&&p1.b>=p1.j) //输出赢的最多的手势 printf("B "); else if (p1.c > p1.b&&p1.c>=p1.j) printf("C "); else printf("J "); if (p2.b >= p2.c&&p2.b>=p2.j) printf("B"); else if (p2.c >= p2.j&&p2.c>p2.b) printf("C"); else printf("J"); }