题目
牛牛和牛妹进行石头剪刀布游戏。游戏规则如下:
两个人进行石头剪刀布大战,开始时会发给每个人 张牌,然后两人进行
次剪刀石头布大战,每一次两人分别选择自己的
张牌中的一张,打出,每张牌只能用一次。
牛牛每赢一局会 +1 分,每输一局会 -1 分,每平局一局不加分也不减分。
开始发给牛牛的 张牌里,有
张石头牌,
张剪刀牌,
张布牌。
开始发给牛妹的 张牌里,有
张石头牌,
张剪刀牌,
张布牌。
请问在知道牛妹每一轮出什么牌的情况下,牛牛最终的分数最高多少分?
解题思路
先计算牛牛最多能赢多少轮:,得到了这么多分。
并将发出的牌减去相应数目。
然后计算平局的次数:。这些局不得分。
最后把 减去上面赢和平局的次数,就是牛牛输的次数,扣除这么多分。
返回得到的总分。
C++代码
class Solution {
public:
/**
*
* @param n int整型
* @param p1 int整型
* @param q1 int整型
* @param m1 int整型
* @param p2 int整型
* @param q2 int整型
* @param m2 int整型
* @return int整型
*/
int Highestscore(int n, int p1, int q1, int m1, int p2, int q2, int m2) {
// write code here
int cnt1 = min(p1, q2);
p1 -= cnt1;
q2 -= cnt1;
int cnt2 = min(q1, m2);
q1 -= cnt2;
m2 -= cnt2;
int cnt3 = min(m1, p2);
m1 -= cnt3;
p2 -= cnt3;
int cnt = cnt1 + cnt2 + cnt3;
int score = cnt;
cnt += min(p1,p2) + min(q1,q2) + min(m1,m2);
score -= (n-cnt);
return score;
}
}; 
京公网安备 11010502036488号