蛮力法、动态规划法回溯法和分支限界法求解01背包问题.docVIP

  • 8
  • 0
  • 约9.43千字
  • 约 12页
  • 2016-06-30 发布于贵州
  • 举报

蛮力法、动态规划法回溯法和分支限界法求解01背包问题.doc

蛮力法、动态规划法回溯法和分支限界法求解01背包问题

一、实验内容: 分别用蛮力法、动态规划法、回溯法和分支限界法求解0/1背包问题。 注:0/1背包问题:给定种物品和一个容量为的背包,物品的重量是,其价值为,背包问题是如何使选择装入背包内的物品,使得装入背包中的物品的总价值最大。其中,每种物品只有全部装入背包或不装入背包两种选择。 二、所用算法的基本思想及复杂度分析: 1.蛮力法求解0/1背包问题: 1)基本思想: 对于有n种可选物品的0/1背包问题,其解空间由长度为n的0-1向量组成,可用子集数表示。在搜索解空间树时,深度优先遍历,搜索每一个结点,无论是否可能产生最优解,都遍历至叶子结点,记录每次得到的装入总价值,然后记录遍历过的最大价值。 2)代码: #includeiostream #includealgorithm using namespace std; #define N 100 //最多可能物体数 struct goods //物品结构体 { int sign; //物品序号 int w; //物品重量 int p; //物品价值 }a[N]; bool m(goods a,goods b) { return (a.p/a.w)(b.p/b.w); } int max(int a,int b) { return ab?b:a; } int n,C,bestP=0,cp=0,cw=0; int X[N],cx

文档评论(0)

1亿VIP精品文档

相关文档