1024
来个力扣每日一题吧~~~
是之前正常骰子(六个面)的变形,其实思路差不多,都DP:
```java
class Solution {public int numRollsToTarget(int n, int k, int target) {//dp[i][j]的含义:有 i + 1 个骰子(编号从0开始),和等于 j 值的总数目。int[][] dp = new int[n][target + 1];int MOD = 1_000_000_000 + 7;//初始化:第一个骰子for (int i = 1; i <= k && i <= target; i++) {dp[0][i] = 1;}//遍历每一个骰子for (int i = 1; i < n; i++) {//上几个骰子的值遍历for (int j = i; j <= target - 1; j++) {//在上几个骰子的值的基础上,投k个数for (int m = 1; m <= k; m++) {if (j + m > target) {continue;}dp[i][j + m] += dp[i - 1][j];dp[i][j + m] %= MOD;}}}return dp[n - 1][target];}
}