标签:利用 优化方法 div 就是 斐波那契 lin 方法 特征 通过
以斐波那契数列为例 来看一下 滚动数组 是如何节约空间的
传统方式:如果想求解fib(7) 需要8个数组空间
0 1 1 2 3 5 8
通过观察 我们可以发现 求解fib(n) 我们只关心fib(n-1)和fib(n-2) 对再之前的数据并不关心 也就是可以认为是无效数据 这种特征特别适用于动态规划类题目
而利用滚动数组 我们只需要3个数组空间
0 1 1
1 1 2
1 2 3
2 3 5
3 5 8
传统方式:
Fib[0] = 0; Fib[1] = 1; Fib[2] = 1; for(int i = 3; i <= n; ++i) Fib[i] = Fib[i - 1] + Fib[i - 2]; return Fib[n];
滚动数组:
Fib[1] = 0; Fib[2] = 1; for(int i = 2; i <= n; ++i) { Fib[0] = Fib[1]; Fib[1] = Fib[2]; Fib[2] = Fib[0] + Fib[1]; } return Fib[2];
Dynamic Programming 类问题的空间优化方法 - 滚动数组
标签:利用 优化方法 div 就是 斐波那契 lin 方法 特征 通过
原文地址:https://www.cnblogs.com/lnas01/p/12467090.html