1018. 锤子剪刀布

来源:互联网 发布:javascript 英文地图 编辑:程序博客网 时间:2024/04/30 10:00

1018. 锤子剪刀布 (20)

输入格式:

输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。

输出格式:

输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。

输入样例:
10C JJ BC BB BB CC CC BJ BB CJ J
输出样例:
5 3 22 3 5B 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");}

1 0