2140. Solving Questions With Brainpower (Medium) - TengnanYao/daily_leetcode GitHub Wiki
class Solution:
def mostPoints(self, questions: List[List[int]]) -> int:
# recursive
@cache
def dfs(i):
if i >= len(questions):
return 0
return max(dfs(i + 1), questions[i][0] + dfs(i + questions[i][1] + 1))
return dfs(0)
# iterative
n = len(questions)
dp = [0] * 200001
for i in range(n - 1, -1, -1):
a, b = questions[i]
dp[i] = max(dp[i + 1], dp[i + b + 1] + a)
return dp[0]