(华电科院)算法设计与分析实验报告—01背包问题.doc

(华电科院)算法设计与分析实验报告—01背包问题.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(华电科院)算法设计与分析实验报告—01背包问题

课程设计报告 ( 2013 -- 2014 年度第 一 学期) 名 称: 算法设计与分析 题 目 0—1背包问题 院 系: 信息工程 班 级: 网络11k1 学 号: 学生姓名: 指导教师: 牛华为 设计周数: 1周 成 绩: 日期:2013年 11月 15 一、目的和要求 了解并掌握动态规划算法; 用动态规划算法解决0-1背包问题。 二、实验环境 用VC6.0软件进行编程 三、实验内容 0-1背包问题:给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为c。问应如何选择装入背包中的物品,使得装入背包中的物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或不装入背包。不能将物品i装入背包多次,也不能只装入部分物品i。0-1背包问题是一个特殊的整数规划问题。 四、?问题分析 在0/1背包问题中物体或者被装入背包或者不被装入背包只有两种选择。?循环变量i、j意义:前i个物品能够装入载重量为j的背包中,数组c意义:c[i][j]表示前i个物品能装入载重量为j的背包中物品的最大价值。若w[i]j第i个物品不装入背包?,否则若w[i]=j且第i个物品装入背包后的价值c[i-1][j],则记录当前最大价值,替换为第i个物品装入背包后的价值。?? ?其c++部分代码如下: #includeiostream.h void knapsack(int a[100][100],int s[100],int v[100],int n,int C) { for(int i=0;i=C;i++) { a[0][i]=0; } for( i=1;i=n;i++) { a[i][0]=0; for(int j=1;j=C;j++) { if(s[i]=j) { if(v[i]+a[i-1][j-s[i]]a[i-1][j]) a[i][j]=v[i]+a[i-1][j-s[i]]; else a[i][j]=a[i-1][j]; } else a[i][j]=a[i-1][j]; } } } void outputsack(int a[100][100], int x[100],int s[100],int n,int C) { for(int k=n;k=1;k--) { if(a[k][C]=a[k-1][C]) x[k]=0; else { x[k]=1; C=C-s[k]; } } x[1]=a[1][C]?1:0; } int main() { int a[100][100]; int s[100]; int v[100]; int x[100]; int C,n; cout请输入物品的总个数n:endl; cinn; cout请输入背包的总容量C:endl; cinC; cout请依次输入物品的体积s[i]:endl; for(int i=1;i=n;i++) {cins[i];} cout请对应输入物品的价值v[i]:endl; for( i=1;i=n;i++) {cinv[i];} knapsack(a,s,v,n,C); outputsack(a,x,s,C,n); //max(s,v); //for( i=1;i=n;i++) //coutx[i]; cout最大价值是:endl; couta[n][C]endl; return 0; } 五、调试过程及实验结果 六、总结 01背包问题是最基本的背包问题,它包含了背包问题中设计状态、方程的最基本思想,另外,别的类型的背包问题往往也可以转换成01背包问题求解。 实验二:贪心算法解0—1背包问题 一、实验目的 学习掌贪心算法法思想。 二、实验内容 用贪心法求解0—1背包问题,并输出问题的最优解。 问题描述:给定n种物品和一背包。物品i的重量是Wi,其价值为Vi,背包的容量是c,问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大。 三、实验条件 用VC6.0软件进行编程。 四、需求分析 对于给定n种物品和一背包。在容量最大值固定的情况下,要求装入的物品价值最大化。 五、基本思想: 总是对当前的问题作

文档评论(0)

xjj2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档