(精品)动态规划算法:0-1背包问题.ppt
《(精品)动态规划算法:0-1背包问题.ppt》由会员分享,可在线阅读,更多相关《(精品)动态规划算法:0-1背包问题.ppt(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、动态规划算法原理动态规划算法原理 将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来。为了不去求解相同的子问题,引入一个数组,把所有子问题的解存于该数组中,这就是动态规划所采用的基本方法。动态规划采用由下至上(Bottom-Up)计算策略。例:输出例:输出FibonaciiFibonacii数列的第数列的第n n项的递归算法项的递归算法#include int fib(int n)if (n=1)return 1;else return fib(n-1)+fib(n-2);voi
2、d main()int n;scanf(%d,&n);printf(%dn,fib(n);在上面的递归算法中存在多次计算同一个子问题,如:fib(2)。如果能将这样的子问题的解用数组保存起来,即可以加快求解的过程,即采用动态规划方法。/输出输出FibonaciiFibonacii数列的第数列的第n n项的动态规划算法项的动态规划算法#include#define MAX 50int fib(int n)int i,aMAX;a1=a2=1;for(i=3;i=n;i+)ai=ai-1+ai-2;return an;void main()int n;scanf(%d,&n);printf(%dn
3、,fib(n);例例1 1:0-10-1背包问题背包问题 有一个负重能力为m的背包和不同价值vi、不同重量wi的物品n件。在不超过负重能力的前提下,从这n件物品中任意选择物品,使这些物品的价值之和最大。物品1234重量5321价值4431mij=mi+1j 当j=wi 算法思想算法思想1:设mij用来表示从第i项物品开始到第n项物品中区取出装入体积为j的背包的物品的最大价值。其中i的范围为1到n,其中j的范围为0到c,程序要寻求的解为m1c。可以发现:mnj 在当j=0并且j=wn 0 当j=0 并且 j wn/程序程序1:动态规划法:动态规划法#include#define MAX 20in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 动态 规划 算法 背包 问题
限制150内