[Problem]
[Solution]
Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that position.
Determine if you are able to reach the last index.
For example:
A = [2,3,1,1,4]
, return true
.
A = [3,2,1,0,4]
, return false
.
[Solution]
class Solution {说明:版权所有,转载请注明出处。 Coder007的博客
public:
bool canJump(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
// empty
if(n <= 0)return false;
// initial
bool *dp = new bool[n];
dp[n-1] = true;
for(int i = n-2; i >= 0; --i){
dp[i] = false;
int k = 1; // length of the step to jump
while(k <= A[i] && i + k < n){
if(i+k == n-1 || dp[i+k]){
dp[i] = true;
break;
}
else if(!dp[i+k]){
k += A[i+k] + 1;
}
}
}
return dp[0];
}
};