假设你正在爬楼梯,一共有n阶;每次可以爬1阶或者2阶。请问一共有多少种不同的爬法?
题解:
我们使用dp[i]表示爬到第i阶,并且最后一次为1阶的爬法;用np[i]表示爬到第i阶,并且最后一次为2阶的爬法。
因此爬到第i阶的方法=dp[i] + np[i]
dp的递推公式:
dp[i] = dp[i-1]+np[I-1];
np的递推公式:
np[I] = dp[i-1];
class Solution {
public int climbStairs(int n) {
int[] dp = new int[n];
int[] np = new int[n];
dp[0] = 1;
np[0] = 0;
for(int i = 1; i <n; i++)
{
dp[i] = dp[i-1] + np[i-1];
np[i] = dp[i-1];
}
return dp[n-1]+np[n-1];
}
}