algorithm-problem-leetcode-1155
1155. 掷骰子等于目标和的方法数(1654)
这里有 n
个一样的骰子,每个骰子上都有 k
个面,分别标号为 1
到 k
。
给定三个整数 n
、k
和 target
,请返回投掷骰子的所有可能得到的结果(共有 k^n
种方式),使得骰子面朝上的数字总和等于 target
。
由于答案可能很大,你需要对 10^9 + 7
取模。
示例 1:
1 | 输入:n = 1, k = 6, target = 3 |
示例 2:
1 | 输入:n = 2, k = 6, target = 7 |
示例 3:
1 | 输入:n = 30, k = 30, target = 500 |
提示:
1 <= n, k <= 30
1 <= target <= 1000
思路:多重背包(背包恰好装capacity,求方案数)
多重背包是看成 n 种物品,每种物品的大小都是 1,每种物品至少选 1 个,至多选 k 个,计算组成大小为 target 的方案数。
- 物品重量 = 1,至少1个,至多k个
- 物品价值 = null
- 背包容量 = target
这题也可以看作是分组背包,分组背包是看成 n 组,每组内有大小分别为 1,2,…,k 的物品,计算每组恰好选一个物品,组成大小为 target 的方案数
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BUGHERE の 博客!
评论