需要使用動態規劃+滾動數組,滾動數組每次使用固定的幾個空間,來達到壓縮,節省儲存空間的目的,主要用在遞推和動態規劃中。
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;
}