华为OD机试-抢7游戏(Java 2024 D卷 100分)
题目描述
A 和 B 两个人玩抢7游戏。游戏规则如下:
- A 先报一个起始数字 X(10 ≤ X ≤ 10000)。
- B 报下一个数字 Y,满足 0 < X - Y < 3。
- A 再报一个数字 Z,满足 0 < Y - Z < 3。
- 以此类推,直到其中一个玩家抢到7,抢到7的玩家即为胜者。
在 B 赢得比赛的情况下,求一共有多少种组合。
示例
输入:
100
输出:
组合次数
解题思路
我们可以使用动态规划来解决这个问题。具体步骤如下:
- 定义一个数组
dp
,其中dp[i]
表示当前数字为i
时,B 能赢得比赛的方式数。 - 初始化
dp[7] = 1
,因为当数字为7时,B 已经赢得比赛。 - 对于每个数字
i
从8到起始数字M
,计算 B 能赢得比赛的方式数。B 可以选择报i-1
或