赞
踩
动态规划一些题目,简单有趣,个人感觉是为了减少不必要的重复问题,提供了一个思路:
如上图一样,使用了常用方法递归法,得到了非常慢的程序,其复杂度到2^n 从下图的分治图可以看出来
这里出现大量的重复的部分,于是采取了后面部分,使得每次都只出现一次,这样便可以快速的计算了
于是代码就出来了:
- #include <iostream>
- using namespace std;
-
- int dynamicFib(int n)
- {
- int g = 0, f = 1;
- while (0< n--)
- {
- g = g + f; //g 变为 g+f 如 g = 1+0 = 1
- f = g - f; //f 赋值了上次g记录的值 f = 1 -0 =1
- }
- return g;
- }
-
- int main()
- {
- cout << "fib " << dynamicFib(10)<< endl;
- return 0;
- }
在 图解算法 中:动态规划解释为:
这里只是简单介绍了动态规划的特点,对应的例题练习在我的leetCode题目栏里,请多多关注我哟。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。