dp[i][j]表示前i个骰子到达数字总和j的方案数
dp[i][j] = Σdp[i-1][j-k],其中k是一个骰子能掷出的范围
1 #define _for(i,a,b) for(int i = (a);i < b;i ++) 2 3 class Solution 4 { 5 public: 6 int dp[31][1003]; 7 int numRollsToTarget(int d, int f, int target) 8 { 9 _for(k,1,f+1) 10 dp[0][k] = 1; 11 _for(i,1,d) 12 _for(j,1,target+1) 13 _for(k,1,f+1) 14 { 15 if(j-k>0) 16 dp[i][j] += dp[i-1][j-k]; 17 dp[i][j] %= 1000000007; 18 } 19 return dp[d-1][target]; 20 } 21 };
原文地址:https://www.cnblogs.com/Asurudo/p/11334549.html
时间: 2024-10-09 01:25:12