收藏 分享(赏)

算法实验报告01背包问题.doc

上传人:春华秋实 文档编号:3677493 上传时间:2018-11-15 格式:DOC 页数:10 大小:183KB
下载 相关 举报
算法实验报告01背包问题.doc_第1页
第1页 / 共10页
算法实验报告01背包问题.doc_第2页
第2页 / 共10页
算法实验报告01背包问题.doc_第3页
第3页 / 共10页
算法实验报告01背包问题.doc_第4页
第4页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、河北工业大学计算机科学与软件学院算法分析与设计实验报告实验: 0/1 背包问题姓名:学号:班级:“0-1“背包问题的动态规划算法一、 实验目的与要求:熟悉 C/C+语言的集成开发环境;通过本实验加深对贪心算法、动态规划和回溯算法的理解。二、 实验内容:掌握贪心算法、动态规划和回溯算法的概念和基本思想,分析并掌握“0-1“背包问题的三种算法,并分析其优缺点。三、 实验程序:#include“stdio.h“int n=5;int w=0,3,2,1,4,5;int v=0,25,20,15,40,50;int x5;int V67;int C=6;void main(void)int i,j;f

2、or(i=0;iVi-1j-wi+vi)Vij=Vi-1j;elseVij=Vi-1j-wi+vi;/以上构造动态规划表j=C;for(i=n;i0;i-)if(VijVi-1j)xi=1;j=j-wi;else xi=0;printf(“动态规划表如下:n“);for(i=0;i/定义 min、max 函数int min(int a,int b)if(a=b) return b;else return a;int max(int a,int b)if(a=b) return a;else return b;void Knapsack(int v6,int w6,int c,int n,int

3、 m66)/int jmax=min(wn-1,c);for(int j=0;j1;i-)jmax=min(wi-1,c);for(int j=0;j=w1)m1c=max(m1c,m2c-w1+v1);void Traceback(int m66,int w6,int c,int n,int x6)for(int i=1;ic1;cout“0-1 背包如下:“endl;cout“物品的重量分别为:“endl;for(int p=1;p6;p+)coutw1p“ “;coutendl;cout“物品的价值分别为:“endl;for(int q=1;q6;q+)coutv1q“ “;couten

4、dl;cout“背包的容量为:“c1endl;cout“要选择的物品是:“endl;Knapsack(v1,w1,c1,n1,t);/for(int i=1;i=n1;i+)coutv1iendl;Traceback(t,w1,c1,n1,x1);for(i=1;i=n1;i+)if(x1i=1)m+=v1i;cout“第“i“件物品“endl;cout“最大总价值为:“mendl;四、 实验结果:五、 实验分析:本次实验用回溯法解决 0/1 背包问题,回溯法首先要建立 0/1 背包的解空间树,然后再回溯得出搜素空间,即解的范围,然后求出最佳答案。实验中先构造两个函数,Knapsack 列出所有背包的解空间,Traceback 对解空间进行搜索,得出答案。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 规范标准 > 实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报