-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDieSum.cpp
37 lines (36 loc) · 992 Bytes
/
DieSum.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Solution {
public:
int numRollsToTarget(int d, int f, int target) {
if(d*f<target)
return 0;
vector<vector<int>>dp(d+1, vector<int>(target+1,0));
int i,j,k,m=1000000007;
dp[0][0]=1;
for(i=1;i<=d;i++)
{
for(j=1;j<=target;j++)
{
if(i*f<j)
break;
for(k=1;((k<=f) && (k<=j));k++)
dp[i][j]=((dp[i][j]%m) + (dp[i-1][j-k]%m))%m;
}
}
return dp[d][target];
// vector<int>dp(target+1,0);
// dp[0]=1;
// for(i=1;i<=d;i++)
// {
// vector<int>dp1(target+1);
// for(j=1;j<=target;j++)
// {
// if(i*f<j)
// break;
// for(k=1;k<=min(j,f);k++)
// dp1[j]=(dp1[j]%m+dp[j-k]%m)%m;
// }
// dp = dp1;
// }
// return dp[target];
}
};