• 首页
  • 关于

我自然

0/1背包和完全背包的java解法

在 2009年7月14日 上公布 作者为 yankay

背包问题:

现有 n 件物品,一个最大容量为 maxWeight 的背包。第 i 件物品重量为 weights[i] ,价值为 values[i] 。如果是0/1背包,对于一件物品,你必须选择取或不取,且每件物品只能被取一次(这就是“0/1”的含义);如果是完全背包,你可以选择任意多件。

求放置哪几件物品进背包,使得背包中物品价值最大。

思路:推荐

  • 0/1背包
  • 完全背包

说的清清楚楚地。

代码最实际了:
0/1背包

public static int unpack(int[] values, int[] weights, int maxWeight) {
  int[] ans = new int[maxWeight + 1];
  for (int i = 0; i = weights[i]; j--) {
      int takeValue = values[i] + ans[j - weights[i]];
      if (takeValue > ans[j]) {
        ans[j] = takeValue;
      }
    }
  }
  return ans[ans.length - 1];
}

完全背包:

public static int unpack(int[] values, int[] weights, int maxWeight) {
  int[] ans = new int[maxWeight + 1];
  for (int i = 0; i  ans[j]) {
        ans[j] = takeValue;
      }
    }
  }
  return ans[maxWeight];
}
文章分类 未分类 |
« 宿醉记
睡不着 »

发表评论 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

近期文章

  • 听说 Docker 被 kubenetes 抛弃了,怎么办?containerd
  • 公告 – 博客重开了
  • CloudFoundry v2面面谈,内赠MicroCFv2福利
  • Docker能够运行任何应用的“PaaS”云
  • Scala Tour – 精选

近期评论

  • [整理]完美哈希函数(Perfect Hash Function) - 高性能架构探索发表在《最小完美哈希函数简介》
  • Scala Tour – 精选 - Java天堂发表在《Scala Tour – 精选》
  • Golang适合高并发场景的原因分析 - 站壳网发表在《Go-简洁的并发》
  • HBase 官方文档 – 源码巴士发表在《Windows下eclipse的 C++环境配置》
  • Go-简洁的并发-点开发表在《Go-简洁的并发》

归档

  • 2021年6月
  • 2021年3月
  • 2014年2月
  • 2013年9月
  • 2013年5月
  • 2013年1月
  • 2012年11月
  • 2012年9月
  • 2012年8月
  • 2012年3月
  • 2012年2月
  • 2012年1月
  • 2011年11月
  • 2011年10月
  • 2011年9月
  • 2010年10月
  • 2010年8月
  • 2010年7月
  • 2010年6月
  • 2010年5月
  • 2010年4月
  • 2010年3月
  • 2010年2月
  • 2010年1月
  • 2009年10月
  • 2009年9月
  • 2009年8月
  • 2009年7月
  • 2009年6月
  • 2008年10月
  • 2008年8月
  • 2008年7月
  • 2008年6月

分类目录

  • 家庭生活
  • 未分类
  • 每日心得
  • 软件技术

友情链接

  • DaoCloud Enterprise
  • DaoCloud 云原生一体机

CyberChimps WordPress Themes

沪ICP备2021008917号-1 © 颜开