class Solution {
public:
int N;
int d[10001]={0,};
void go(vector<int>& nums, int now)
{
if(now>=N)
return ;
if(d[now] != -1) return ;
d[now] = 1;
for(int i=nums[now];i>=0;i--){
if(now+i>=N)
i=N-now;
if(d[now+i] == -1){
go(nums,now+i);
}
else
break;
}
}
bool canJump(vector<int>& nums) {
memset(d,-1,sizeof(d));
N = nums.size();
go(nums,0);
return d[nums.size()-1] > 0 ? 1 : 0;
}
};
엉망인 소스
댓글 0