0
已解决
汪宇航
新手启示者
新手启示者
放寒假了,小五一个人在家很无聊。于是他就想出一个新的石头剪刀布的玩法(单机版的哦)。玩法如下:S代表石头,J代表剪刀,B代表布。赢得一分,平不得分,输扣一分。进行n次游戏,而且对手每次游戏出什么都是已知的。但是自己只能出a次S,b次J和c次B(a,b,c都是非负,并且a+b+c=n)。现在需要你如何安排这a次S,b次J和c次B使自己最后得到的分数最大。
输入描述 Input Description
总共有三行:
第一行先给出n(n<=100),表示进行几次游戏,第二行接着是给n个由S,J,B组成的字符串,表示对手每次游戏出的是什么,第三行最后给出a,b,c。
输出描述 Output Description
输出只有一个整数,表示此次游戏小五赢得的最大分数
样例输入 Sample Input
2 JJ 2 0 0
样例输出 Sample Output
2
汪宇航在2021-05-02 13:58:25追加了内容
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
0
已采纳
张帆
中级天翼
中级天翼
现遍历字符串s,
if(s[i]=='S') s1++;
else if(s[i]=='J') j1++;
else b1++;
然后就是一大堆运算
cnt1=min(s2,j1);
cnt2=min(j2,b1);
cnt3=min(b2,s1);
win=cnt1+cnt2+cnt3;
s2-=cnt1,j1-=cnt1;
j2-=cnt2,b1-=cnt2;
b2-=cnt3,s1-=cnt3;
cnt1=min(s1,s2);
cnt2=min(j1,j2);
cnt3=min(b1,b2);
s2-=cnt1;
j2-=cnt2;
b2-=cnt3;
fail=s2+j2+b2;
cout<<win-fail;
0
0
0