Skip to content

1263. Number Of Dice Rolls With Target Sum

Difficulty: Medium

LeetCode Problem View on GitHub


1263. Number of Dice Rolls With Target Sum

Medium


You have n dice, and each dice has k faces numbered from 1 to k.

Given three integers n, k, and target, return the number of possible ways (out of the kn total ways) to roll the dice, so the sum of the face-up numbers equals target. Since the answer may be too large, return it modulo 109 + 7.

 

Example 1:

Input: n = 1, k = 6, target = 3
Output: 1
Explanation: You throw one die with 6 faces.
There is only one way to get a sum of 3.

Example 2:

Input: n = 2, k = 6, target = 7
Output: 6
Explanation: You throw two dice, each with 6 faces.
There are 6 ways to get a sum of 7: 1+6, 2+5, 3+4, 4+3, 5+2, 6+1.

Example 3:

Input: n = 30, k = 30, target = 500
Output: 222616187
Explanation: The answer must be returned modulo 109 + 7.

 

Constraints:

  • 1 <= n, k <= 30
  • 1 <= target <= 1000

Solution

import java.util.Arrays;

class Solution {
    private int dp[][];
    private int mod = (int)(1e9 + 7);
    public int numRollsToTarget(int n, int k, int target) {
        dp = new int[n + 1][target + 1];
        for (int current[] : dp)
            Arrays.fill(current, -1);
        return solve(n, 0, target, k) % mod;
    }
    private int solve(int n, int ind, int target, int k) {
        if (ind >= n) {
            if (target != 0)
                return 0;
            return 1;
        }

        if (dp[ind][target] != -1)
            return dp[ind][target] % mod;

        long ways = 0;
        for (int i = 1; i <= k; i++) {
            if (target >= i)
                ways = (ways + solve(n, ind + 1, target - i, k)) % mod;
        }
        return dp[ind][target] = (int)(ways % mod);
    }
}

Complexity Analysis

  • Time Complexity: O(?)
  • Space Complexity: O(?)

Approach

Detailed explanation of the approach will be added here