题目链接

LeetCode 面试题60. n个骰子的点数[1]

题目描述

n 个骰子扔在地上,所有骰子朝上一面的点数之和为 s。输入 n,打印出 s 的所有可能的值出现的概率。

你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。

说明:

  • 1 <= n <= 11

示例1

        输入:
1
输出:
[0.16667,0.16667,0.16667,0.16667,0.16667,0.16667]

示例2

        输入:
2
输出:
[0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111,0.08333,0.05556,0.02778]

题解

表示投掷 个骰子,点数为 的方法数。那么可以根据最后一个骰子的点数情况(),递归进行计算:

当然还得加一些约束,例如 个骰子的点数范围是 ,所以一定有 ,即 。所以综上 的范围是 ,最后的转移方程就是:

但是,考虑到在计算 个骰子时,如果 ,那么 ,也就是 是根本不会被计算的。所以初始化的时候如果都是 ,那么就不用管这个下界了,也就是转移方程为:

此外,因为每次计算只会用到 个骰子的方法数,所以第一个维度可以省去。但是注意计算的时候 就得逆序遍历了,这样才不会覆盖掉 个骰子的方案数,造成后面的计算错误。

最后答案就是

代码

动态规划+空间优化(c++)

        class Solution {public:vector<double> twoSum(int n) {vector<int> dp(6*n+1, 0);for (int i = 1; i <= 6; ++i) dp[i] = 1;for (int i = 2; i <= n; ++i) {for (int s = 6*i; s >= i; --s) {dp[s] = 0;for (int j = 1; j <= min(6, s-i+1); ++j) {dp[s] += dp[s-j];}}}double total = pow(6, n);vector<double> res;for (int s = n; s <= 6*n; ++s) {res.push_back(dp[s]/total);}return res;}
};

参考资料

[1]

LeetCode 面试题60. n个骰子的点数: https://leetcode-cn.com/problems/nge-tou-zi-de-dian-shu-lcof/

【每日算法Day 98】慈善赌神godweiyang教你算骰子点数概率!相关推荐

  1. AI赌神超进化:德扑六人局击溃世界冠军,诈唬如神,每小时能赢1千刀 | Science...

    鱼羊 栗子 乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI AI赌神完成了超进化! 两年前的Libratus,历时20天战胜4位顶级德州扑克选手,但只能1v1.现在全新的赌神Plurib ...

  2. 如何判断数组所有数都不等于一个数_【每日算法Day 91】求解数组中出现次数超过1/3的那个数

    题目链接 LeetCode 229. 求众数 II[1] 题目描述 给定一个大小为 的数组,找出其中所有出现超过 次的元素. 说明: 要求算法的时间复杂度为 ,空间复杂度为 . 示例1 输入: [3, ...

  3. 消除左递归c++代码_【每日算法Day 85】图解算法:一行代码解决约瑟夫环的变体...

    题目链接 LeetCode 390. 消除游戏[1] 题目描述 给定一个从 到 排序的整数列表. 首先,从左到右,从第一个数字开始,每隔一个数字进行删除,直到列表的末尾. 第二步,在剩下的数字中,从右 ...

  4. 重复次数最多的 子串_每日算法系列【LeetCode 424】替换后的最长重复字符

    题目描述 给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次.在执行上述操作后,找到包含重复字母的最长子串的长度. 示例1 输入: s = &quo ...

  5. CMU德扑AI赌神,现已拿下美军千万美元大单

    乾明 发自 凹非寺 量子位 出品 | 公众号 QbitAI 还记得那个玩德扑的AI吗? 没错,就是Libratus,中文名冷扑大师,在2017年举办的德扑人机大战中,一举成名. 在2017年的比赛中, ...

  6. python 获取节假日,二十四节气,中国农历,星次、每日凶煞、每日值神、农历建除十二神、农历每日宜忌、彭祖百忌、每日五行、二十八星宿、天干地支、农历生辰八字、时辰凶吉等

    Python 农历项目cnlunar的使用 文章目录 Python 农历项目cnlunar的使用 前言 一.cnlunar是什么? 二.使用步骤 1.安装pip 2.使用 总结 前言 1.不使用寿星通 ...

  7. AI赌神称霸德扑的秘密,刚刚被《科学》“曝光”了

    本文来自AI新媒体量子位(QbitAI) 称霸德州扑克赛场的赌神Libratus,是今年最瞩目的AI明星之一. 刚刚,<科学>最新发布的预印版论文,详细解读了AI赌神背后系统的全貌.此前的 ...

  8. 【每日算法】C语言8大经典排序算法(2)

    接上文--->[每日算法]C语言8大经典排序算法(1) 二.插入类排序 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中 ...

  9. java回文数算法for_【Java】【每日算法/刷穿 LeetCode】9. 回文数(简单)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]9. 回文数(简单) 宫水三叶发布于 今天 15:30 题目描述 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从 ...

  10. 每日算法C语言1-求某整数

    每日算法C语言 题目 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 程序分析: 在10万以内判断,先将该数加上100后再开方,再将该数加上168后再开方如 ...

最新文章

  1. 硬件常见问题及排错思路。
  2. linux存储--从内核文件系统看文件读写过程(四)
  3. 汉字转拼音(c#) -转载
  4. Android资源文件在配置文件中的使用
  5. Test435678
  6. Python3判断是否为回文数
  7. java robot键值_Java:使用Robot类模拟键盘, 以Alt码方式输出汉字
  8. 她拒绝麦肯锡 Offer,建立图片训练数据库,斯坦福 AI 实验室负责人 | 人物志
  9. 阿里云 centos 安装图形化界面
  10. 从源码看spring applicationContext在web容器中加载过程
  11. 停课不停学,大型网课直播翻车现场,你别笑,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈啊哈...
  12. 小结Python的中文处理(转)
  13. React 路由 中 BrowserHistory 刷新报404
  14. chown无效的用户mysql_求大神指引,安装MYSQL时执行chown指令出错,已经创建组和用户。local中并没有找到mysql。用find找过路径...
  15. CF1047A Little C Loves 3 I
  16. 颜色列表(中英文名称,RGB HSV CMYK值)
  17. google“退出”中国?
  18. NetApp 存储阵列 AFF A 系列——可提供屡获殊荣的速度和响应能力,满足性能敏感性工作负载的需求
  19. 数字资产期权新手入门手册 | TokenInsight
  20. 候选键的计算(数据库系统概论)

热门文章

  1. Oracle odi 数据表导出到文件
  2. iOS:菜单控制器和菜单项:UIMenuController和UIMenuItem
  3. 三个流行MySQL分支的对比
  4. Sharepoint学习笔记—ECM系列—找不到Content Type Publishing链接
  5. struts2 国际化 cookie保存语言, 下次访问时显示当前设置的语言
  6. 列出选定月份的时间序列
  7. select样式调整
  8. 添加用户到sudoers
  9. HDU 1079 Calendar Game 博弈
  10. java系列1 环境变量配置