LeetCode 70. 爬楼梯 动态规划入门题(DP、记忆化搜索)

class Solution {
public:
    int climbStairs(int n) {
        vector<int> f(n+1);
        f[0] = 1;f[1] = 1;
        for(int i=2;i<=n;i++){
            f[i] = f[i-1]+f[i-2];
        }
        return f[n];
    }
};

记忆化搜索:
保存中间结果,避免冗余搜索。

class Solution {
public:
    vector<int> f;
    int climbStairs(int n) {
        f.resize(n+1,0);
        return dfs(n);;
    }
    int dfs(int n){
        if(n==0 || n==1){
            return 1;
        }
        if(f[n]){
            return f[n];
        }
        return f[n] = dfs(n-1)+dfs(n-2);
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章