(D卷,200分)- 抢7游戏(Java & JS & Python & C)

获取题库不需要订阅专栏,可直接私信我进入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 能赢得

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值