Minimum Difficulty of a Job Schedule LeetCode solution in C++
1class Solution {2vector<int> v;3int len;4int dp[301][11];5int dfs(int idx, int d) { // n*d6if (idx >= len) return 0;7if (d == 1) return *max_element(v.begin() + idx, v.end());8if (dp[idx][d] != -1) return dp[idx][d];9int maxx = INT_MIN;10int res = INT_MAX;11for (int i = idx; i <= len - d; i++) { // n12maxx = max(v[i], maxx);13res = min(maxx + dfs(i + 1, d - 1), res);14}15return dp[idx][d] = res;16}1718public:19int minDifficulty(vector<int> &jobDifficulty, int d) {20v = jobDifficulty;21len = v.size();22if (d > len) return -1;23memset(dp, -1, sizeof(dp));24return dfs(0, d);25}26};