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;
    }
};
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号