版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、动态规划算法原理 将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来。 为了不去求解相同的子问题,引入一个数组,把所有子问题的解存于该数组中,这就是动态规划所采用的基本方法。动态规划采用由下至上(Bottom-Up) 计算策略。 例:输出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)
2、;printf(%dn ,fib( n ) ); 在上面的递归算法中存在多次计算同一个子问题,如:fib(2)。如果能将这样的子问题的解用数组保存起来,即可以加快求解的过程,即采用动态规划方法。/输出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 ) );例1:0-1背包问题 有一个负重能力为m的背包和不
3、同价值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 20int n,c,wMAX,vMAX,mMAXMAX=0;void disp( )int i;for (i=1;
4、 i=n; i+)if ( mic!=mi+1c ) printf(%5d%5dn,wi,vi);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; 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); kna
5、psack(); disp();printf(最大价值=%dn,m0c);for (i=1; i=n; i+)for (j=0; 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/程序2:动态规划法#include #define MAX 20int n,c
6、,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;/显示所取的物品及其重量(其中一个解)/对数组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;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); k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《地下工程施工》大学笔记
- 平凉市农村饮水安全工程可行性分析报告28113
- 2024年10版小学英语第5单元真题试卷
- 文学文化常识(测试)-2023年中考语文一轮复习(原卷版)
- 2024年移动通讯手机配套集成电路项目投资申请报告代可行性研究报告
- 2024年节能型电冰箱、空调器项目资金筹措计划书代可行性研究报告
- 2024年免疫调节药物项目资金申请报告代可行性研究报告
- 诗词曲阅读(原卷版)-2025年中考语文复习专练
- 规划科工作计划模板8篇
- 生产订货供货合同(4篇)
- 租地种香蕉合同
- 旧市场提升改造方案
- 统编版 七年级上册(2024修订) 第四单元 13 纪念白求恩 课件
- 外汇兑换居间劳务协议
- 少儿趣味编程Scratch综合实战《小车巡线》教学设计
- 第4课《公民的基本权利和义务》(课件)-部编版道德与法治六年级上册
- 糖尿病患者体重管理专家共识(2024年版)解读
- 中国融通集团招聘笔试题库2024
- ICU谵妄患者的护理
- 村医卫生室考勤管理制度
- 2024新版英语英语3500个单词分类大全
评论
0/150
提交评论