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);
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章