




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 总览纺织工程师考试中的软技能考察试题及答案
- 浙江林场考试试题及答案
- 激光技术工程师试题探讨
- 深度理解医学基础知识概念的重要性试题及答案
- 药品研发中的伦理标准研究试题及答案
- 探讨文化产业管理证书考试的试题与答案
- 营养指南更新的背景与公共营养师考试知识的对接试题及答案
- 系统架构设计师考试有效学习方法探讨试题及答案
- 系统管理师笔试中的常见错误试题及答案
- 激光技术工程师重要知识点总结试题及答案
- 2024年浙江长征职业技术学院单招综合素质考试题库附答案
- 2025届安徽省池州市普通高中高三下学期教学质量统一监测物理试卷(含答案)
- 库房管理工作职责与规范化
- 专题06文学文化常识中考语文一轮复习
- WMS仓库管理系统采购协议
- 2024国家数字化范式与路径-公共政策立场-67正式版
- 2025年河南工业和信息化职业学院单招职业技能测试题库必考题
- 瑞吉欧幼儿教育
- 2025年中国人寿招聘笔试笔试参考题库附带答案详解
- 中国输电线路在线监测系统行业发展状况及前景规模调查报告2025-2030年
- 第16课《有为有不为》公开课一等奖创新教学设计
评论
0/150
提交评论