File tree Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Expand file tree Collapse file tree 1 file changed +39
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments