admin管理员组

文章数量:1621658

题目描述

大家应该都会玩“锤子剪刀布”的游戏:
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

输入描述

输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有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 <iostream>
using namespace std;
int main() {
	int n;
	cin>>n;
	int ca[]={0,0,0};// 胜 平 负 
	int cb[]={0,0,0};// 胜 平 负 
	int awin[]={0,0,0};// B C J
	int bwin[]={0,0,0};// B C J
	for(int i=0; i<n; i++) {
		char a,b;
		cin>>a>>b;
		if(a=='B') {
			if(b=='B') {
				ca[1]++;
				cb[1]++;
			}
			if(b=='C') {
				ca[0]++;
				cb[2]++;
				awin[0]++; 
			}
			if(b=='J') {
				cb[0]++;
				ca[2]++;
				awin[2]++;
			}
		}
		if(a=='C') {
			if(b=='B') {
				ca[2]++;
				cb[0]++;
				bwin[0]++;
			}
			if(b=='C') {
				ca[1]++;
				cb[1]++;
			}
			if(b=='J') {
				ca[0]++;
				cb[2]++;
				awin[1]++;
				
			}
		}
		if(a=='J') {
			if(b=='B') {
				ca[0]++;
				cb[2]++;
				awin[2]++;
			}
			if(b=='C') {
				cb[0]++;
				ca[2]++;
				bwin[1]++;
			}
			if(b=='J') {
				ca[1]++;
				cb[1]++;
			}
		}
	}
	cout<<ca[0]<<" "<<ca[1]<<" "<<ca[2]<<endl;
	cout<<cb[0]<<" "<<cb[1]<<" "<<cb[2]<<endl;
	if(awin[0]>=awin[1]&& awin[0]>=awin[2]) {
		cout<<"B ";
	} else if(awin[1]>=awin[0] && awin[1]>=awin[2]) {
		cout<<"C ";
	} else {
		cout<<"J ";
	}
	if(bwin[0]>=bwin[1]&& bwin[0]>=bwin[2]) {
		cout<<"B";
	} else if(bwin[1]>=bwin[0] && bwin[1]>=bwin[2]) {
		cout<<"C";
	} else {
		cout<<"J";
	}
}

本文标签: 乙级锤子剪刀真题PAT