获取题库不需要订阅专栏,可直接私信我进入CSDN领军人物top1博主的华为OD交流圈观看完整题库、最新面试实况、考试报告等内容以及大佬一对一答疑。
题目描述
A、B两个人玩抢7游戏,游戏规则为:
A先报一个起始数字 X(10 ≤ 起始数字 ≤ 10000),B报下一个数字 Y (X - Y < 3),A再报一个数字 Z(Y - Z < 3),以此类推,直到其中一个抢到7,抢到7即为胜者;
在B赢得比赛的情况下,一共有多少种组合?
输入描述
起始数字 M
10 ≤ M ≤ 10000
如:
100
输出描述
B能赢得比赛的组合次数
用例
输入 10
输出 1
说明 无
题目解析
定义游戏规则:
A 和 B 交替报数字,初始由 A 报数字 M。
每一轮报数要求差值小于 3,直到其中一个玩家报出数字 7,该玩家获胜。
计算 B 能赢得比赛的组合次数:
使用动态规划(DP)的思想进行求解。定义 dp[x] 表示以起始数字 x 开始,B 能赢得比赛的组合次数。
初始状态设定为 dp[7] = 1,因为当起始数字为 7 时,B 直接抢到了 7,是一种胜利的情况。
状态转移:
对于每个起始数字 x,计算从 x 开始能够到达的下一个数字 y(满足 x - y < 3),并计算以 y 开始 B 能赢得