Skip to content

Commit ad271c0

Browse files
Oct 2nd : Number of dice rolls with target sum
1 parent 39ec1b7 commit ad271c0

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#include<iostream>
2+
#include<bits/stdc++.h>
3+
using namespace std;
4+
int dp[31][1001] = {0}; // Table of n * target sum ; This is used to save the results in bottom up approach
5+
int numRollsToTarget(int n, int k, int target) {
6+
dp[0][0] = 1; // When you have 0 dices and target sum = 0; the number of ways to get the answer is 1
7+
8+
for(int i = 1;i<=target;i++){ // when you have 0 dices; [1,targetsum] numbers there are zero ways to get the answer
9+
dp[0][i] = 0;
10+
}
11+
for(int i=1;i<=n;i++){ // when you have 0 target; n =[1,n] dices there are zero ways to get the answer
12+
dp[i][0] = 0;
13+
}
14+
15+
/*
16+
The below loop has Time complexity = O(n*targetSum*k)
17+
It finds the answer for smaller target sums and build up to find the solution of the targetSum
18+
*/
19+
for(int i=1;i<=n;i++){
20+
for(int j=1;j<=target;j++){
21+
long long res = 0;
22+
for(int x=1;x<=k;x++){
23+
if(j>=x){
24+
res = (res % 1000000007) + (dp[i-1][j-x] % 1000000007);
25+
// res = res % 1000000007;
26+
}
27+
}
28+
dp[i][j] = res ;
29+
}
30+
}
31+
return dp[n][target] % 1000000007;
32+
}
33+
34+
int main(){
35+
36+
int n = 7,k=6,target = 30;
37+
cout<<numRollsToTarget(n,k,target)<<endl;
38+
return 0;
39+
}

0 commit comments

Comments
 (0)