算法设计与分析课程设计报告一、目的和要求了解并掌握动态规划算法;用动态规划算法解决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]c[i-1][j],则记录当前最大价值,替换为第i个物品装入背包后的价值
其c++部分代码如下:#includevoidknapsack(inta[100][100],ints[100],intv[100],intn,intC){for(inti=0;i