典型动态规划
老三步
初始状态: f[1] = 1,f[0] = 0
转移方程: f[n+1] = f[n] + f[n-1]
f[n] = f[n-1] + f[n-2];
最优子结构: f[n]
注意一下题目要求的取模
public int fib(int n) {
/** 初始状态: f[1] = 1,f[0] = 0
* 转移方程: f[n+1] = f[n] + f[n-1]
* f[n] = f[n-1] + f[n-2];
* 最优子结构: f[n]
*/
int sum;//相当于fn
int a = 0;//相当于f0
int b = 1;//相当于f1 也相当于fn
if (n == 0) return 0;
if (n == 1) return 1;
for (int i = 2; i <= n; i++){
sum = (a + b) % 1000000007;
a = b;
b = sum;
}
return b;
}

本文解析了如何使用动态规划解决斐波那契数列问题,重点介绍了初始状态、转移方程以及取模操作在代码中的应用。通过for循环实现并返回第n项的值,展示了算法在实际编程中的应用。
448

被折叠的 条评论
为什么被折叠?



