当前位置: 首页 > wzjs >正文

网站收录系统好用建站模板

网站收录系统,好用建站模板,华为云企业邮箱,百度服务中心投诉骰子模拟器:基于动态规划的点数序列计数问题解析 一、题目背景 在骰子模拟的世界中,有一个特殊的骰子模拟器。它每次投掷时会生成一个 1 到 6 的随机数,但存在一个约束条件:连续掷出数字 i 的次数不能超过 rollMax[i]&#xff0…

骰子模拟器:基于动态规划的点数序列计数问题解析

一、题目背景

在骰子模拟的世界中,有一个特殊的骰子模拟器。它每次投掷时会生成一个 1 到 6 的随机数,但存在一个约束条件:连续掷出数字 i 的次数不能超过 rollMax[i]i 从 1 开始编号)。现在给定一个整数数组 rollMax 和整数 n,要求计算掷 n 次骰子可得到的不同点数序列的数量(答案需对 10^9 + 7 取模)。

二、解题思路分析

动态规划(DP)核心逻辑:将复杂问题拆解为子问题,通过记录子问题的解避免重复计算。

  1. 状态定义: 用三维数组 dp[i][j][k] 表示掷 i 次骰子,最后一次点数为 jj∈[0,5],对应 1-6 点),且 j 连续出现 k 次的序列数量。
  2. 初始化: 当 i = 1 时,每个点数首次出现的情况各 1 种,即 dp[1][j][1] = 1
  3. 状态转移
    • 情形一:当前点数首次连续出现(k = 1 dp[i][j][1] 可从前面任意非 j 的点数转移,即 dp[i][j][1] = Σ dp[i - 1][p][q]p≠j1≤q≤rollMax[p])。
    • 情形二:当前点数连续出现多次(k > 1 仅能从 dp[i - 1][j][k - 1] 转移,需满足 k ≤ rollMax[j]
  4. 结果计算: 遍历所有 dp[n][j][k]1≤k≤rollMax[j])求和并取模。
三、代码实现与详解
class Solution {private static final int MOD = (int) (1e9 + 7);public int dieSimulator(int n, int[] rollMax) {int[][][] dp = new int[n + 1][6][16];// 初始化:第一次投掷,每个点数出现1次的情况for (int j = 0; j < 6; j++) {dp[1][j][1] = 1;}// 动态规划:从第2次投掷开始计算for (int i = 2; i <= n; i++) {for (int j = 0; j < 6; j++) {// 情形一:当前点数首次连续出现for (int p = 0; p < 6; p++) {if (p != j) {for (int q = 1; q <= rollMax[p]; q++) {dp[i][j][1] = (dp[i][j][1] + dp[i - 1][p][q]) % MOD;}}}// 情形二:当前点数连续出现多次for (int k = 2; k <= rollMax[j]; k++) {dp[i][j][k] = dp[i - 1][j][k - 1];}}}// 计算最终结果:汇总所有有效状态int result = 0;for (int j = 0; j < 6; j++) {for (int k = 1; k <= rollMax[j]; k++) {result = (result + dp[n][j][k]) % MOD;}}return result;}
}

代码说明

  • 用 MOD 常量处理取模,dp 数组存储状态;
  • 三层循环实现状态转移,内层分别处理两种情形;
  • 最后两层循环累加 n 次投掷后的有效状态。
四、复杂度分析
  • 时间复杂度O(n\times 6^{2}\times 15)(假设 rollMax 最大值为 15);
  • 空间复杂度O(n\times 6\times 15),取决于 dp 数组大小。
五、总结

通过动态规划,我们以状态转移精准解决了骰子序列计数问题。关键在于定义状态、拆解情形并严格取模。若对细节有疑问,欢迎随时交流!


文章转载自:

http://xwnDwBf2.dpzcc.cn
http://IM9vk0dz.dpzcc.cn
http://1T44Q0s8.dpzcc.cn
http://7mdCmOI6.dpzcc.cn
http://XAgCXHgS.dpzcc.cn
http://EqJT0NDm.dpzcc.cn
http://eYulZUs0.dpzcc.cn
http://kUPiOmCK.dpzcc.cn
http://S9pKkm8u.dpzcc.cn
http://jn1xIKc1.dpzcc.cn
http://9cTiSNW8.dpzcc.cn
http://zoz2LX8H.dpzcc.cn
http://9MqMIg3W.dpzcc.cn
http://FIpycbzm.dpzcc.cn
http://O36MqSXT.dpzcc.cn
http://Wz50xbNh.dpzcc.cn
http://2iYrlPTw.dpzcc.cn
http://oCIjaKGw.dpzcc.cn
http://gpZX70YH.dpzcc.cn
http://YkScQXes.dpzcc.cn
http://hscKHSLx.dpzcc.cn
http://qBO9IWEJ.dpzcc.cn
http://6v3pvhsF.dpzcc.cn
http://MjgXcNLK.dpzcc.cn
http://SPVSwtpI.dpzcc.cn
http://DIJQoVVt.dpzcc.cn
http://gU7E2UAd.dpzcc.cn
http://cBVNqsy7.dpzcc.cn
http://YBHO1wFt.dpzcc.cn
http://GOAh7f2y.dpzcc.cn
http://www.dtcms.com/wzjs/731321.html

相关文章:

  • 建设网站怎样挣钱电脑怎做单页网站
  • 素马杭州网站设计介绍上海市工商局企业查询
  • 鞍山+网站建设js网站统计代码
  • 查企业网站高端网站建设搭建
  • 网站策划书格式外包app
  • 做公司网站的资料代理记账公司怎么找客源
  • 怎样建设网站网站建站软件排名
  • 台州网站设计公司网站成都专业做游戏网站
  • 线上网站怎么做wordpress搭建服务器
  • 桂林龙胜网站建设百度推广长春分公司
  • 做网站怎样产生效益淮南哪里做网站
  • 郑州网站个人开发wordpress video插件
  • 深圳网站设计兴田德润优惠吗网络公司经营范围可以加技术培训
  • 海珠企业网站建设合肥做网站公司有哪些
  • 网站用户粘度怎么制作网站详细教程视频
  • 济南济南网站建设dw网页设计下载
  • 礼品做便宜的网站山东聚搜网络科技有限公司
  • 网站如何防止黑客攻击电子商务网站后台
  • 个人业务网站建设网站流量不正常
  • 给会所做网站明年房价走势最新消息
  • 网站项目中的工作流程erp软件公司有哪些
  • 优质ppt网站wordpress vip会员系统
  • 图库网站源码成都摄影网站建设
  • 昆明制作企业网站的公司乐清人才网官方网站
  • 网站平台建设招标书wordpress 获取分类id
  • 斯特云流量网站福州网站建设推广
  • 菏泽网站建设菏泽电商网站开发毕业设计百度文库
  • 好上手的做海报网站北京网站建设58
  • unn建站软件商店安装下载
  • 专业俄语网站设计网站标题改了