java: add “1155. Number of Dice Rolls With Target Sum”

Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
Matej Focko 2023-12-26 23:58:37 +01:00
parent d3bc57de18
commit fdc2539ddb
Signed by: mfocko
GPG key ID: 7C47D46246790496

View file

@ -0,0 +1,28 @@
class Solution {
private static final long MOD = 1000000007;
public int numRollsToTarget(int n, int k, int target) {
// out of bounds
if (n > target || target > n * k) {
return 0;
}
long[][] dp = new long[n + 1][target + 1];
dp[0][0] = 1;
for (int toss = 1; toss <= n; ++toss) {
for (
int sumIdx = toss, maxSumIdx = Math.min(target, toss * k);
sumIdx <= maxSumIdx;
++sumIdx
) {
for (int f = 1; f <= Math.min(k, sumIdx); ++f) {
dp[toss][sumIdx] = (dp[toss][sumIdx] + dp[toss - 1][sumIdx - f]) % MOD;
}
}
}
return (int) dp[n][target];
}
}