动态规划算法背包问题精.ppt
《动态规划算法背包问题精.ppt》由会员分享,可在线阅读,更多相关《动态规划算法背包问题精.ppt(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、动态规划算法背包问题第1 页,本讲稿共12 页例:输出Fibonacii数列的第n项的递归算法#include int fib(int n)if(n=1)return 1;else return fib(n-1)+fib(n-2);void main()int n;scanf(%d,&n);printf(%dn,fib(n);在上面的递归算法中存在多次计算同一个子问题,如:fib(2)。如果能将这样的子问题的解用数组保存起来,即可以加快求解的过程,即采用动态规划方法。第2 页,本讲稿共12 页/输出Fibonacii数列的第n项的动态规划算法#include#define MAX 50int
2、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,fib(n);第3 页,本讲稿共12 页例1:0-1背包问题 有 一 个 负 重 能 力 为m 的 背 包 和 不 同 价 值vi、不 同 重 量wi的 物 品n 件。在 不 超 过 负 重 能 力 的 前 提 下,从 这n 件物品中任意选择物品,使这些物品的价值之和最大。物品1 2 3 4重量5 3 2 1价值4 4 3 1第4 页,本讲稿共12 页mij=mi+1j 当j=wi
3、 算法思想1:设mij 用来表示从第i 项物品开始到第n项物品中区取出装入体积为j 的背包的物品的最大价值。其中i 的范围为1 到n,其中j 的范围为0 到c,程序要寻求的解为m1c。可以发现:mnj 在当j=0 并且j=wn 0 当j=0 并且 j wn第5 页,本讲稿共12 页/程序1:动态规划法#include#define MAX 20int n,c,wMAX,vMAX,mMAXMAX=0;void disp()int i;for(i=1;i=n;i+)if(mic!=mi+1c)printf(%5d%5dn,wi,vi);第6 页,本讲稿共12 页void knapsack()int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 规划 算法 背包 问题
限制150内