Minimum Difficulty of a Job Schedule LeetCode solution in C++

1
class Solution {
2
vector<int> v;
3
int len;
4
int dp[301][11];
5
int dfs(int idx, int d) { // n*d
6
if (idx >= len) return 0;
7
if (d == 1) return *max_element(v.begin() + idx, v.end());
8
if (dp[idx][d] != -1) return dp[idx][d];
9
int maxx = INT_MIN;
10
int res = INT_MAX;
11
for (int i = idx; i <= len - d; i++) { // n
12
maxx = max(v[i], maxx);
13
res = min(maxx + dfs(i + 1, d - 1), res);
14
}
15
return dp[idx][d] = res;
16
}
17

18
public:
19
int minDifficulty(vector<int> &jobDifficulty, int d) {
20
v = jobDifficulty;
21
len = v.size();
22
if (d > len) return -1;
23
memset(dp, -1, sizeof(dp));
24
return dfs(0, d);
25
}
26
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0