23. Dice throw
The problem can be found at the following link: 🔗 Question Link
🧩 Problem Description
Given n dice, each having faces numbered from 1 to m, find the number of ways to get a total sum x when all the dice are thrown.
You must count every distinct sequence of face-up values (order matters).
You are given:
ndice,each having
mfaces numbered from 1 tom,and a target sum
x.
Find the number of ways to get the sum x using the n dice. The result can be large, so return it modulo 10⁹+7.
📘 Examples
Example 1:
Input:
m = 6, n = 3, x = 12Output:
Explanation:
There are 25 distinct sequences of three 6-faced dice that sum up to 12.
Example 2:
Input:
Output:
Explanation:
Only the sequence [2,2,2] sums to 6 when using three 2-faced dice.
🔒 Constraints
$1 \leq m, n, x \leq 50$
$1 \leq x \leq 2500$
✅ My Approach
Classic 2D Dynamic Programming
We use a classic bottom-up dynamic programming strategy. Let dp[i][j] represent the number of ways to get sum j using i dice.
Recurrence Relation:
To get a sum of j with i dice, try all face values k = 1...m, and add ways to get j - k with i - 1 dice:
Algorithm Steps:
Create a 2D vector
dp[n+1][x+1]and initializedp[0][0] = 1.Loop
ifrom1ton(number of dice).Loop
jfrom1tox(target sum).For each
kfrom1tom, ifj ≥ k, adddp[i-1][j-k]todp[i][j].Return
dp[n][x].
🧮 Time and Auxiliary Space Complexity
Time Complexity: O(n × x × m) We compute each state
(i, j)using up tomprevious states.Auxiliary Space Complexity: O(n × x) We use a 2D DP table with
n+1rows andx+1columns.
🧑💻 Code (C++)
🧑💻 Code (Java)
🐍 Code (Python)
🧠 Contribution and Support
For discussions, questions, or doubts related to this solution, feel free to connect on LinkedIn: 📬 Any Questions?. Let’s make this learning journey more collaborative!
⭐ If you find this helpful, please give this repository a star! ⭐
📍Visitor Count
Last updated