2023-10-24 LeetCode每日一题(掷骰子等于目标和的方法数)

2023-10-24每日一题

一、题目编号

1155. 掷骰子等于目标和的方法数

二、题目链接

点击跳转到题目位置

三、题目描述

这里有 n 个一样的骰子,每个骰子上都有 k 个面,分别标号为 1 到 k 。

给定三个整数 n , k 和 target ,返回可能的方式(从总共 kn 种方式中)滚动骰子的数量,使正面朝上的数字之和等于 target 。

答案可能很大,你需要对 109 + 7 取模
示例 1:
2023-10-24 LeetCode每日一题(掷骰子等于目标和的方法数)_第1张图片

示例 2:
2023-10-24 LeetCode每日一题(掷骰子等于目标和的方法数)_第2张图片

示例 3:
在这里插入图片描述
提示:

  • 1 <= n, k <= 30
  • 1 <= target <= 1000

四、解题代码

class Solution {
    const int mod = 10e8 + 7;
public:
    int numRollsToTarget(int n, int k, int target) {
        vector<vector<int>> f(n + 1, vector<int>(target + 1));
        f[0][0] = 1;
        for (int i = 1; i <= n; ++i) {
            for (int j = 0; j <= target; ++j) {
                for (int x = 1; x <= k; ++x) {
                    if (j - x >= 0) {
                        f[i][j] = (f[i][j] + f[i - 1][j - x]) % mod;
                    }
                }
            }
        }
        return f[n][target];          
    }
};

五、解题思路

(1) 动态规划。

你可能感兴趣的:(LeetCode每日一题,1024程序员节,数据结构,leetcode,算法)