PAT B1018 -- 錘子剪刀布

牛客網PAT乙級第八題,錘子剪刀布,題目描述大致如下:

輸入第一行正整數N(N<=105),代表交鋒次數,接下來N行輸入交鋒信息,格式"甲 乙",C代表錘子,B代表布,J代表剪刀。

輸出第1,2行分別給出甲和乙的勝,負,平的次數,數字間空格分離,第三行給出兩個字母,代表甲和乙獲勝次數最多的手勢。

空格分隔,如果解不唯一,輸出字母序最小的解。


代碼如下:

#include <iostream>

using namespace std;

char FindVictoryWay(int shitou, int jiandao, int bu)
{
	if (shitou > jiandao)
	{
		if (bu >= shitou)
		{
			return 'B';
		}
		else
		{
			return 'C';
		}
	}
	else if (shitou == jiandao)
	{
		if (shitou > bu)
		{
			return 'C';
		}
		else
		{
			return 'B';
		}
	}
	else
	{
		if (jiandao > bu)
		{
			return 'J';
		}
		else
		{
			return 'B';
		}
	}

}

int main()
{
	int N;//交鋒次數
	char a_result, b_result;
	int a_victory = 0, a_ping = 0, b_victory = 0;
	int a_shitou = 0, a_jiandao = 0, a_bu = 0, b_shitou = 0, b_jiandao = 0, b_bu = 0;
	char a_winmost, b_winmost;
	while (cin >> N)
	{
		for (int i = 0; i < N; i++)
		{
			cin >> a_result >> b_result;
			if (a_result == b_result)
			{
				a_ping++;
			}
			else if (((a_result == 'C') && (b_result == 'J')) || ((a_result == 'B') && (b_result = 'C')) || ((a_result == 'J') && (b_result == 'B')))
			{
				a_victory++;
				switch (a_result)
				{
				case 'C':
					a_shitou++;
					break;
				case 'J':
					a_jiandao++;
					break;
				case 'B':
					a_bu++;
					break;
				default:
					break;
				}
			}
			else
			{
				b_victory++;
				switch (b_result)
				{
				case 'C':
					b_shitou++;
					break;
				case 'J':
					b_jiandao++;
					break;
				case 'B':
					b_bu++;
					break;
				default:
					break;
				}
			}

		}
		a_winmost = FindVictoryWay(a_shitou, a_jiandao, a_bu);
		b_winmost = FindVictoryWay(b_shitou, b_jiandao, b_bu);
		cout << a_victory << " " << a_ping << " " << b_victory << endl;
		cout << b_victory << " " << a_ping << " " << a_victory << endl;
		cout << a_winmost << " " << b_winmost << endl;
	}
    return 0;
}

發佈了46 篇原創文章 · 獲贊 23 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章