石頭剪刀布

石頭剪刀布1

TimeLimit: 1 Second   MemoryLimit: 32 Megabyte

Description

放寒假了,x一個人在家很無聊。於是他就想出了一種新的石頭剪刀布玩法(單機版的哦)。

玩法如下:S代表石頭,J代表剪刀,B代表布。贏得一分,平不得分,輸扣一分。進行n次遊戲,而且對手每次遊戲出的什麼都是已知的。但是自己只能出a次S,b次J和c次B(a,b,c都是非負並且a+b+c=n)。

現在需要你如何安排這a次S,b次J和c次B使自己最後得到的分數最大。

Input

先給出n(n<=100),表示進行幾次遊戲。接着是給n個由S,J,B組成的字符串,表示對手每次遊戲出的是什麼。最後是給出a,b,c。

當n=0時,輸入結束。

Output

對於每組測試數據給出一個整數,表示此次遊戲x能贏的最大分數。

Sample Input

2
JJ
2 0 0
0

Sample Output


#include<iostream>
#include<stdlib.h>
using namespace std;

int main()
{
	char sta[110];
	int n,len,ss,jj,bb,sum,i;
	while(scanf("%d",&n)!=EOF,n)
	{
		sum=0;
		getchar();
		gets(sta);
		scanf("%d%d%d",&ss,&jj,&bb);
		len=strlen(sta);
		for(i=0;i<len;i++)
		{
			if(sta[i]=='S')
			{
				if(bb)
				{
					bb--;
					sum++;
				}
				else if(ss)
				{
					ss--;
				}
				else
				{
					jj--;
					sum--;
				}
			}
			else if(sta[i]=='J')
			{
				if(ss)
				{
					ss--;
					sum++;
				}
				else if(jj)
				{
					jj--;
				}
				else
				{
					bb--;
					sum--;
				}
			}
			else if(sta[i]=='B')
			{
				if(jj)
				{
					jj--;
					sum++;
				}
				else if(bb)
				{
					bb--;
				}
				else
				{
					ss--;
					sum--;
				}
			}
		}
		printf("%d\n",sum);
	}
	return 0;
}


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