1.动态规划 fib序列
class Solution {
public:
int dp[1005];
int climbStairs(int n) {
dp[0]=dp[1]=1;
for(int i=2;i<=n;++i) dp[i]=dp[i-1]+dp[i-2];
return dp[n];
}
};
2.fib通项公式
class Solution {
public:
int climbStairs(int n) {
double k = 1 / sqrt(5), a = (1 + sqrt(5)) / 2, b = (1 - sqrt(5)) / 2;
return (int)(k*(pow(a, n + 1) - pow(b, n + 1)));
}
};