欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    动态规划算法背包问题精.ppt

    • 资源ID:91248782       资源大小:657.50KB        全文页数:12页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    动态规划算法背包问题精.ppt

    动态规划算法背包问题第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 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 算法思想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 i,j;for(j=wn;j=1;i-)for(j=wi;jmi+1j-wi+vi)mij=mi+1j;else mij=mi+1j-wi+vi;第7 页,本讲稿共12 页void main()int i,j;printf(输入物品种数:);scanf(%d,&n);printf(输入每种物品的重量与价值:n);for(i=1;i=n;i+)scanf(%d%d,&wi,&vi);printf(输入背包的总重量:n);scanf(%d,&c);knapsack();disp();printf(最大价值=%dn,m0c);for(i=1;i=n;i+)for(j=0;j=c;j+)printf(%3d,mij);printf(n);第8 页,本讲稿共12 页mij=0 i=0 或者 j=0mi-1j j0 且j0 且j=wi 算法思想2:设mij 用来表示从前i 项物品中区取出装入体积为j 的背包的物品的最大价值。其中i 的范围为1 到n,其中j 的范围为0 到c,程序要寻求的解为mnc。可以清楚地发现:m0j 对所有的j 的值为0,mi0 对所有的i 的值为0。当前的体积j 大于等于wi时,mij 是下面两个量的最大值:mi-1j 和 mi-1j-wi+vi 当前的体积j 小于wi时,mij 等于mi-1j第9 页,本讲稿共12 页/程序2:动态规划法#include#define MAX 20int n,c,wMAX,vMAX,mMAXMAX=0;void knapsack()int i,j;for(i=1;i=n;i+)for(j=1;j=wi-1&mi-1j-wi-1+vi-1 mij)mij=mi-1j-wi-1+vi-1;第10 页,本讲稿共12 页/显示所取的物品及其重量(其中一个解)/对数组m 的最后一列检查来求解void disp()int i,j;i=n;while(mic=mi-1c)i-;while(i0)j=i-1;while(mic-mjc!=vi-1&j0)j-;printf(%5d%5dn,wi-1,vi-1);i=j;第11 页,本讲稿共12 页void main()int i,j;printf(输入物品种数:);scanf(%d,&n);printf(输入每种物品的重量与价值:n);for(i=0;in;i+)scanf(%d%d,&wi,&vi);printf(输入背包的总重量:n);scanf(%d,&c);knapsack();disp();printf(最大价值=%dn,mnc);for(i=0;i=n;i+)for(j=0;j=c;j+)printf(%3d,mij);printf(n);第12 页,本讲稿共12 页

    注意事项

    本文(动态规划算法背包问题精.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开