NC 197 跳跃游戏(一) 判断是否可达 深度优先搜索 C/C++
//深度优先搜索的方法在坏的情况下 时间复杂度会比较高,不过总的来说,如果只是找到一条可行的路径,一般也只会执行几次遍历。
如果题目是找最好情况,就需要动态规划保存多次重复执行的中间结果。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return bool布尔型
*/
bool canJump(vector<int>& nums) {
if(!nums.size()) return false;
return canJump(nums,nums.size()-1);
}
bool canJump(vector<int> &nums, int pos){
if(pos == 0) return true;
int min_num = pos + 1;
for(int k = 1; k <= pos; k++){
if(nums[pos-k] >= k){ //是一种合法的情况
bool temp = canJump(nums,pos-k);
if(temp) return temp; //找到路径
}
}
//未找到路径
return false;
}
};