leetcode算法题--掷骰子模拟★★
原题链接:https://leetcode-cn.com/problems/dice-roll-simulation/
动态规划:
dp[i][j][k]表示投掷第i次,点数为j,k表示连续次数
状态转移:
- 当j非连续出现时(即k==1时):
//j出现一次的组合数等于上一轮投出非点数j的所有情况和
dp[i][j][1]=sum(dp[i-1][!j][:])
- 当j连续出现时(即k>1时):
//本轮投出连续k次的点数j的数量情况等于上一轮连续投出k-1次的点数j的数量情况
dp[i][j][k]=dp[i-1][j][k-1] if k<=rolMax[j]
代码:
int dieSimulator(int n, vector<int>& rollMax) {int mod = 1000000007;vector<vector<vector<int>>> dp(n + 1, vector<vector<int>>(7, vector<int>(16, 0)));for (int i = 1; i <= n; i++){//投掷次数for (int j = 1; j <= 6; j++){if (i == 1){//第一次投掷dp[i][j][1] = 1;continue;}for (int k = 2; k <= rollMax[j - 1]; k++){//数字j连续出现k次dp[i][j][k] = dp[i - 1][j][k - 1];//本轮投出连续k次数字j的情况数量等于:上一轮连续投出k-1次j的情况数量}int s = 0;for (int t = 1; t <= 6; t++){//前一次投出的数不是jif (t == j) continue;for (int k = 1; k <= 15; k++){s += dp[i - 1][t][k];//j出现一次的组合数等于上一轮所有投出非数字j的所有情况和s %= mod;}}dp[i][j][1] = s;}}int ans = 0;for (int j = 1; j <= 6; j++){//投掷n次时所有组合总和for (int k = 1; k <= 15; k++){ans += dp[n][j][k];ans %= mod;}}return ans;
}
leetcode算法题--掷骰子模拟★★相关推荐
- leetcode算法题--掷骰子的N种方法
原题链接:https://leetcode-cn.com/problems/number-of-dice-rolls-with-target-sum/ 动态规划 dp[i][k]表示前i个骰子,k表示 ...
- leetcode - 1223. 掷骰子模拟
1223. 掷骰子模拟 有一个骰子模拟器会每次投掷的时候生成一个 111 到 666 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 iii 的次数不能超过 rollMax ...
- Leetcode.1223 掷骰子模拟
题目链接 Leetcode.1223 掷骰子模拟 Rating : 2008 题目描述 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时 ...
- LeetCode算法题整理(200题左右)
目录 前言 一.树(17) 1.1.后序遍历 1.2.层次遍历 1.3.中序 1.4.前序 二.回溯(20) 2.1.普通回溯 2.2.线性回溯:组合.排列.子集.分割 2.3.矩阵回溯 三.二分查找 ...
- LeetCode算法题-Nth Digit(Java实现)
这是悦乐书的第215次更新,第228篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第83题(顺位题号是400).找到无限整数序列的第n个数字1,2,3,4,5,6,7,8 ...
- LeetCode算法题-Reverse Linked List(Java实现)
这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...
- LeetCode算法题-Convert a Number to Hexadecimal(Java实现)
这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...
- leetcode算法题--零钱兑换
原题链接:https://leetcode-cn.com/problems/coin-change/ 相关题目:leetcode算法题–完全平方数★ 动态规划 dp[i] i从0到amount,dp[ ...
- leetcode算法题-- 买卖股票的最佳时机
原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 这类股票题目请见leetcode算法题–最佳买卖股票时机含 ...
最新文章
- CF570D Tree Requests
- 教你如何保养iphone电池
- python 多维数组(array)排序
- 【机器学习基础】通俗易懂无监督学习K-Means聚类算法及代码实践
- UDP(socket)接和数据案例封装成C++代码
- android apk 反编译工具,安卓apk反编译神器
- php 上传excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例
- android系统功耗优化(2)---Android最佳实践之性能 - 电池续航时间优化
- 机器学习篇01:在线学习的支持向量机算法学习笔记
- 【SSH网上商城项目实战08】查询和删除商品类别功能的实现
- MySQL-第十篇多表连接查询
- beini安装破*WIFI
- 基于OpenCV 人工神经网络的喷码字符识别(C++)
- VB中常用的的ASCII码chr()对应表
- 计算机组成基础(2)-- 微体系结构层
- 聊聊技术人的“绩效考核”
- Windows Server 2016 IPAM 服务管理-李海园-专题视频课程
- opencv2.0 DataType 实现
- 如何使用idea生成Doc文档
- 嵌入式linux并行通信,嵌入式Linux
热门文章
- python搞笑代码-为PYTHON添加define功能【搞笑代码】
- python整数类型-Python整数类型及其运算
- python 书 推荐-推荐几本Python书
- python好找工作么-python和django掌握到什么水平才好找工作?
- 初学者学python好还是c-学Python还是学C?
- 有道精品课python-有道精品课-Python小咖养成计划
- python在财务领域的应用-浅谈财务智能化在实际工作中的运用
- python 命令行参数-python实现读取命令行参数的方法
- 免费学python的软件-初学python编程,有哪些不错的软件值得一用?
- python split(), os.path.split()和os.path.splitext()函数的区别