• 首页
  • 关于

我自然

每月存档:7月 2009

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 < values.length; i++) {
    for (int j = maxWeight; j >= 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 < values.length; i++) {
    for (int j = weights[i]; j <= maxWeight; j++) {
      int takeValue = values[i] + ans[j - weights[i]];
      if (takeValue > ans[j]) {
        ans[j] = takeValue;
      }
    }
  }
  return ans[maxWeight];
}
文章分类 未分类 | 发表评论 |

近期文章

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

近期评论

  • Gao发表在《公告 – 博客重开了》
  • Impala:新一代开源大数据分析引擎 – FIXBBS发表在《Google Dremel 原理 – 如何能3秒分析1PB》
  • 何建兵发表在《NoSQL数据库笔谈v0.2》
  • Pony发表在《Docker能够运行任何应用的“PaaS”云》
  • Pony发表在《Docker能够运行任何应用的“PaaS”云》

归档

  • 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 © 颜开