首页 > 试题广场 >

石头、剪刀、布I

[编程题]石头、剪刀、布I
  • 热度指数:864 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
Alice和Bob打牌,每人都有n张牌
Alice的牌里有p1张石头牌,q1张剪刀牌,m1张布牌。
Bob的牌里有p2张石头牌,q2张剪刀牌,m2张布牌。
Alice知道Bob每次要出什么牌,请你安排策略,使Alice获胜次数最多。
输出获胜次数。

示例1

输入

3,3,0,0,0,0,3

输出

0

说明

Alice只有石头,Bob只有布,每一场Alice都必败,所以Alice只能赢0局  
示例2

输入

6,2,2,2,2,2,2

输出

6

说明

Alice可以在Bob出石头的时候出布,在Bob出布的时候出剪刀,在Bob出剪刀的时候出石头,按照这个策略Alice最多能赢下所有的比赛,所以最多能赢6局  

备注:
win = min(p2,m1)+min(q2,p1)+min(m2,q1)
return win
python两行就搞定了,用不着那么多if判断
发表于 2021-09-12 16:03:42 回复(0)
def Mostvictories(self , n , p1 , q1 , m1 , p2 , q2 , m2 ):
        win=0
        if p2<=m1:
            win+=p2
        else:
            win+=m1
        if q2<=p1:
            win+=q2
        else:
            win+=p1
        if m2<=q1:
            win+=m2
        else:
            win+=q1
        return win
发表于 2021-09-04 11:36:29 回复(0)
function Mostvictories( n ,  p1 ,  q1 ,  m1 ,  p2 ,  q2 ,  m2 ) {
    // write code here
    let a1 = Math.min(p1, q2)
    let a2 = Math.min(q1, m2)
    let a3 = Math.min(m1, p2)
    return a1+a2+a3
}
发表于 2021-08-28 17:44:21 回复(0)
class Solution:
    def Mostvictories(self , n , p1 , q1 , m1 , p2 , q2 , m2 ):
        count = 0
        if p1 >= q2 :
            count += q2
        else:
            count += p1
        
        if q1 >= m2:
            count += m2
        else:
            count += q1
        if m1 >= p2:
            count += p2
        else:
            count += m1

        return count

发表于 2021-06-15 19:59:07 回复(0)

golang

func Mostvictories(n int, p1 int, q1 int, m1 int, p2 int, q2 int, m2 int) int {
    count := 0
    if p1 >= q2 {
        count += q2
    } else {
        count += p1
    }
    if q1 >= m2 {
        count += m2
    } else {
        count += q1
    }
    if m1 >= p2 {
        count += p2
    } else {
        count += m1
    }

    return count
}
发表于 2021-06-05 11:18:39 回复(0)
class Solution:
    def Mostvictories(self , n , p1 , q1 , m1 , p2 , q2 , m2 ):
        k=0
        if p1>=q2:
            k=k+q2
        else:
            k=k+p1
        if q1>=m2:
            k=k+m2
        else:
            k=k+q1
        if m1>=p2:
            k=k+p2
        else:
            k=k+m1
        return k
发表于 2021-04-05 13:45:51 回复(0)
想知道用Java写的各位的运行时间和占用内存,我感觉时间和内存降不下去,时间一直在11ms左右,内存在11180KB,请问各位有什么好的想法吗?

发表于 2021-03-25 17:55:26 回复(0)
这题目有点问题。应该是安排策略后,求Alice 获胜次数最多 多少次。   不然按题目的意思,Alice输的次数也要算上
发表于 2021-02-23 17:24:01 回复(1)