8、爬樓梯

需要使用動態規劃+滾動數組,滾動數組每次使用固定的幾個空間,來達到壓縮,節省儲存空間的目的,主要用在遞推和動態規劃中。

int climbStairs(int n){
    int i;
    int *dp = (int *)malloc(3*sizeof(int));
    int res;
    if(!(n-1))
        return 1;
    dp[0] = 1;					//dp滾動數組,以壓縮空間
    dp[1] = 1;
    dp[2] = 2;
    for(i = 2;i < n;i++){
        dp[0] = dp[1];
        dp[1] = dp[2];
        dp[2] = dp[0] + dp[1];//狀態轉移方程:f(n) = f(n-1)+f(n-2)
    }
    res = dp[2];
    free(dp);
    dp = NULL;
    return res;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章