菜鳥的PAT-B訓練之旅-18

1018. 錘子剪刀布 (20)

時間限制
100 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
CHEN, Yue

大家應該都會玩“錘子剪刀布”的遊戲:兩人同時給出手勢,勝負規則如圖所示:

現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。

輸入格式:

輸入第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
題目分析:將數據獲取,並直接進行比較,並將比較結果存入到數組當中,按要求輸出結果。獲取數據的時候要用getchar()獲取空格;否則獲取的可能不是數據而是空格
代碼:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int max(int buf[],int size)
{
	int i,a;
	a=0;
	for(i=1;i<size;i++)
	{
		if(buf[i]>buf[a])
		{
			a=i;
		}
	}
	return a;
}


int main()
{
	int n;
	scanf("%d",&n);
	getchar();
	int i;
	char J,Y;
	int Out[3]={0},OutJ[3]={0},OutY[3]={0};
	for(i=0;i<n;i++)
	{
		scanf("%c %c",&J,&Y);
		getchar();
		if(J=='B')
		{
			if(Y=='C')
			{
				Out[0]++;
				OutJ[0]++;
			}
			else if(Y=='B')
			{
				Out[1]++;
			}
			else
			{
				Out[2]=Out[2]+1;
				OutY[2]++;
			}
		}
		if(J=='C')
		{
			if(Y=='J')
			{
				Out[0]++;
				OutJ[1]++;
			}
			else if(Y=='C')
			{
				Out[1]++;
			}
			else
			{
				Out[2]++;
				OutY[0]++;
			}
		}
		if(J=='J')
		{
			if(Y=='B')
			{
				Out[0]++;
				OutJ[2]++;
			}
			else if(Y=='J')
			{
				Out[1]++;
			}
			else
			{
				Out[2]++;
				OutY[1]++;
			}
		}
	}
	printf("%d %d %d\n%d %d %d\n",Out[0],Out[1],Out[2],Out[2],Out[1],Out[0]);
	int MaxJ,MaxY;
	MaxJ=max(OutJ,3);
	MaxY=max(OutY,3);
	char a[3]={'B','C','J'};
	printf("%c %c",a[MaxJ],a[MaxY]);
	system("pause");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章