[LeetCode] Solving Questions With Brainpower

2140. Solving Questions With Brainpower

You are given a 0-indexed 2D integer array questions where questions[i] = [pointsi, brainpoweri].

The array describes the questions of an exam, where you have to process the questions in order (i.e., starting from question 0) and make a decision whether to solve or skip each question. Solving question i will earn you pointsi points but you will be unable to solve each of the next brainpoweri questions. If you skip question i, you get to make the decision on the next question.

  • For example, given questions = [[3, 2], [4, 3], [4, 4], [2, 5]]:
  • If question 0 is solved, you will earn 3 points but you will be unable to solve questions 1 and 2.
  • If instead, question 0 is skipped and question 1 is solved, you will earn 4 points but you will be unable to solve questions 2 and 3.

Return the maximum points you can earn for the exam.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
vector<long long> dp;
long long dfs(vector<vector<int>>& q, int n) {
if(n >= q.size()) return 0;
if(dp[n] != -1) return dp[n];
return dp[n] = max(dfs(q, n + 1), q[n][0] + dfs(q, 1 + n + q[n][1]));
}
public:
long long mostPoints(vector<vector<int>>& q) {
dp = vector<long long>(q.size(), -1);
return dfs(q, 0);
}
};

Author: Song Hayoung
Link: https://songhayoung.github.io/2022/02/01/PS/LeetCode/solving-questions-with-brainpower/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.