Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uint dp[1000];
- class Solution {
- auto dfs(vector<int>& a, int i, int d) {
- if (dp[i]) return dp[i];
- int n = a.size();
- uint ret = 1;
- for (int j = i + 1; j <= n - 1 and j <= i + d and a[j] < a[i]; j++)
- ret = max(ret, dfs(a, j, d) + 1);
- for (int j = i - 1; j >= 0 and j >= i - d and a[j] < a[i]; j--)
- ret = max(ret, dfs(a, j, d) + 1);
- dp[i] = ret;
- return ret;
- }
- public:
- int maxJumps(vector<int>& a, int d) {
- uint n = a.size();
- memset(dp, 0, n * sizeof(dp[0]));
- uint ret = 1;
- for (uint i = 0; i < n; i++) {
- ret = max(ret, dfs(a, i, d));
- }
- return ret;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment