admin管理员组

文章数量:1621906

文章目录

    • 题目原文
      • 输入格式:
      • 输出格式:
      • 输入样例:
      • 输出样例:
    • 代码如下:

题目原文

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

输入格式:

输入第 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<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main(void) {
	int Awin=0, Aloss=0, Alegel=0, Bwin=0, Bloss=0, Blegel=0;
	int K;
	char A, B;
	int  ANum[3], BNum[3];
	scanf("%d", &K);
	for (int i = 0; i < 3; i++) {
		ANum[i] = 0;
		BNum[i] = 0;
	}
	for (int i = 0; i < K; i++) {
		scanf(" %c %c", &A, &B);
		if (A == B) {
			Alegel++;
			Blegel++;
		}
		else if ((A == 'C' && B == 'J') || (A == 'J' && B == 'B') || (A == 'B' && B == 'C')) {
			Awin++;
			Bloss++;
			if (A == 'C') {
				ANum[1]++;
			}
			else if (A == 'J') {
				ANum[2]++;
			}
			else
				ANum[0]++;

		}
		else {
			Aloss++;
			Bwin++;
			if (B == 'C') {
				BNum[1]++;
			}
			else if (B == 'J') {
				BNum[2]++;
			}
			else
				BNum[0]++;
		}
	}
	int NumberA=0, NumberB=0;
	int max;
	max = ANum[0];
	for (int i = 0; i < 3; i++) {
		if (max < ANum[i]) {
			max = ANum[i];
			NumberA = i;
		}
	}

	max = BNum[0];
	for (int i = 0; i < 3; i++) {
		if (max < BNum[i]) {
			max = BNum[i];
			NumberB = i;
		}
	}

	printf("%d %d %d\n", Awin, Alegel, Aloss);
	printf("%d %d %d\n", Bwin, Blegel, Bloss);

	if (NumberA == 0) {
		printf("B ");
	}
	else if (NumberA == 1) {
		printf("C ");
	}
	else 
		printf("J ");


	if (NumberB == 0) {
		printf("B");
	}
	else if (NumberB == 1) {
		printf("C");
	}
	else
		printf("J");
	return 0;
}

本文标签: 乙级锤子剪刀PTA水题