
class Solution {
public:
int ans = 0;
int Mod = 1e9 + 7;
int numRollsToTarget(int n, int k, int target) {
return dfs(n, k, target);
}
map<string, int> m;
int dfs(int n, int k, int target) {
if(target == 0 && n == 0) return 1;
if(target < 0 || n == 0) return 0;
string s = to_string(n) + "_" + to_string(k) + "_" + to_string(target);
if(m.count(s)) {
return m[s];
}
int res = 0;
for(int i = 1; i <= k; i ++) {
int t = dfs(n - 1, k, target - i);
res = (res + t) % Mod;
}
m[s] = res;
return res;
}
};
- 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