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;
}

 

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