题目:509. 斐波那契数
思路
动态规划
动态规划五部曲
- 确定dp数组以及下标的含义
f[i]
定义为斐波拉契数列第i
个数; - 确定递推公式
状态转移方程:f[i] = f[i-1] + f[i-2]
- dp数组如何初始化
cpp
f[0] = 0;
f[1] = 1;
- 确定遍历顺序
当前项是由前2项推理得到的,所以要从前往后遍历; - 举例推导dp数组
0 1 1 2 3 5 8 13 21 34 55
代码
cpp
// 动态规划
class Solution {
public:
int fib(int n) {
int f[35] = {0};
int i;
f[0] = 0;
f[1] = 1;
for(i = 2; i <= n; i++)
{
f[i] = f[i-1] + f[i-2];
}
return f[n];
}
};