【算法练习】403. 青蛙过河 动态规划 dfs没看

403. 青蛙过河

 

方法一

用一个 模拟的方法?

class Solution {
public:
 bool canCross(vector& stones) {
    int n=stones.size();
    map> mp;
    //初始化所有的好台阶
    set empty;
    for(int i=1;i0 && mp.count(stones[i]+nextStep)){
                   mp[stones[i]+nextStep].insert(nextStep);
               }
           }
        }
    }
    return !mp[stones[n-1]].empty();
}
};

方法二 动态规划

但是具体的一些边界值的处理没有太懂

class Solution {
public:
bool canCross(vector& stones) {
    int n=stones.size();
    //使用二维dp写
    //用k步是否能到达第i块石头
    //dp[i][k]= dp[j][k-1] || dp[j][k] || dp[j][k+1]   1<=j> dp(n,vector(n+1,false));
    dp[0][0]=true;
    for(int i=1;i

 

你可能感兴趣的:(算法练习,算法,动态规划,leetcode)