剑指 Offer 10- I. 斐波那契数列
题意:求斐波那契数列的f(n),
n
≤
100
n \leq 100
n≤100
思路:直接模拟
class Solution {
static const int modd=1e9+7;
public:
int fib(int n) {
int f[100+5]={0,1};
for(int i=2;i<=n;i++)
f[i]=(f[i-1]+f[i-2])%modd;
return f[n];
}
};
剑指 Offer 10- II. 青蛙跳台阶问题
题意:一次可以走一步or两步,求走到n的方案数,
n
≤
100
n \leq 100
n≤100
思路:用dp,dp[i]=dp[i-1]+dp[i-2],和斐波那契数列的方程是一样的(虽然要解决的问题看起来关系不大)
class Solution {
public:
int numWays(int n) {
const int modd=1e9+7;
int f[100+5]={1,1};
for(int i=2;i<=n;i++)
f[i]=(f[i-1]+f[i-2])%modd;
return f[n];
}
};