当前标签:算法, 共5篇文章
编程探究喝酒时猜扑克牌游戏的胜率
小伙伴们喝酒时通常会玩一些小游戏,根据游戏胜负来决定谁被罚酒,猜扑克是其中一种常见的游戏。游戏规则如下: 游戏一般2人参与,游戏道具为一副扑克牌,任意一张扑克牌代表一个点数,A、2~10、J、Q、K分别代表1~13点(通常还会加入大小王,这里简单起见先不考虑)。 甲从一副扑克牌中任意抽出一张,自己查看后请乙猜测牌中数字。通常乙有3次机会,每次猜测后,若猜中甲抽出的牌,则乙胜利,游戏结束;否则甲根据情况告知乙的猜测偏大或者偏小,直到3次机会全部用完乙都没有猜中,则甲胜。 一直困惑我比较久的问题是第一次先猜哪个数字胜利的概率比较大,从喝酒的经验看,这个数并不一定是正中间的点数7。最近看到猜数字的编程题时突然想到这个小游戏,所以决定编程探究一下。
leetcode 375. 猜数字大小 II
我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。 每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了。 然而,当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。直到你猜到我选的数字,你才算赢得了这个游戏。 给定 n ≥ 1,计算你至少需要拥有多少现金才能确保你能赢得这个游戏。
leetcode 5407. 切披萨的方案数(难度:困难)
给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: 'A' (表示苹果)和 '.' (表示空白格子)。你需要切披萨 k-1 次,得到 k 块披萨并送给别人。 切披萨的每一刀,先要选择是向垂直还是水平方向切,再在矩形的边界上选一个切的位置,将披萨一分为二。如果垂直地切披萨,那么需要把左边的部分送给一个人,如果水平地切,那么需要把上面的部分送给一个人。在切完最后一刀后,需要把剩下来的一块送给最后一个人。 请你返回确保每一块披萨包含 至少 一个苹果的切披萨方案数。
leetcode 5407. 切披萨的方案数(难度:困难)