class Solution:
def numRollsToTarget(self, d: int, f: int, target: int) -> int:
dp = []
for i in range(d+1):
a = []
for j in range(target+1):
a.append(-1)
dp.append(a)
def trav(d, f, target):
if target == 0 and d == 0:
return 1
if target <= 0 or d<= 0:
return 0
if dp[d][target] != -1:
return dp[d][target]
dp[d][target] = 0
for i in range(1, f+1, 1):
dp[d][target] += trav(d-1, f, target - i)
return dp[d][target]
return trav(d, f, target)%(10**9 + 7)
1697C - awoo's Favorite Problem | 165A - Supercentral Point |
1493A - Anti-knapsack | 1493B - Planet Lapituletti |
747B - Mammoth's Genome Decoding | 1591C - Minimize Distance |
1182B - Plus from Picture | 1674B - Dictionary |
1426C - Increase and Copy | 520C - DNA Alignment |
767A - Snacktower | 1365A - Matrix Game |
714B - Filya and Homework | 31A - Worms Evolution |
1691A - Beat The Odds | 433B - Kuriyama Mirai's Stones |
892A - Greed | 32A - Reconnaissance |
1236D - Alice and the Doll | 1207B - Square Filling |
1676D - X-Sum | 1679A - AvtoBus |
1549A - Gregor and Cryptography | 918C - The Monster |
4B - Before an Exam | 545B - Equidistant String |
1244C - The Football Season | 1696B - NIT Destroys the Universe |
1674A - Number Transformation | 1244E - Minimizing Difference |