0-1背包问题
来源:互联网 发布:网络推广代理公司 编辑:程序博客网 时间:2024/04/30 18:34
/** * Created by fhqplzj on 16-8-20 at 上午11:56. */public class Knapsack { private int knap(int[] w, int[] v, int W) { assert w.length == v.length : "The length of w and v must be equal!"; int n = w.length; int[][] dp = new int[n + 1][W + 1]; for (int i = 1; i <= n; i++) { for (int j = 1; j <= W; j++) { if (j < w[i - 1]) { dp[i][j] = dp[i - 1][j]; } else { dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - w[i - 1]] + v[i - 1]); } } } return dp[n][W]; } private int knap2(int[] w, int[] v, int W) { assert w.length == v.length : "The length of w and v must be equal!"; int n = w.length; int[] dp = new int[W + 1]; for (int i = 0; i < n; i++) { for (int j = W; j > 0; j--) { if (j >= w[i]) { dp[j] = Math.max(dp[j], dp[j - w[i]] + v[i]); } } } return dp[W]; } public static void main(String[] args) { Knapsack knapsack = new Knapsack(); int[] w = {2, 2, 6, 5, 4}; int[] v = {6, 3, 5, 4, 6}; int W = 10; int result = knapsack.knap2(w, v, W); System.out.println("result = " + result); }}
0 0
- 背包问题(0-1背包、完全背包、多重背包)详解
- 背包问题和0-1背包问题
- 背包问题和0-1背包问题
- 背包问题系列--"0-1背包问题"
- 背包笔记-含0/1背包问题、完全背包问题、多重背包问题、二维背包问题、分组背包问题
- 【背包问题】背包问题之0-1背包、完全背包、多重背包
- 0-1背包问题
- 0/1背包问题
- 0,1背包问题
- 0-1背包问题
- 0/1背包问题
- 0-1背包问题
- // 0-1背包问题
- 0/1背包问题
- 0-1背包问题
- 0-1背包问题
- 0-1背包问题
- 0/1背包问题
- 子类构造和析构被执行时是否调用父类以及调用顺序
- 化学盐
- HDU5091->线段树维护区间覆盖次数&&扫描线
- 时滞微分方程求解之三ddesd--变时滞
- kxmovie源码详解
- 0-1背包问题
- iOS 杂烩
- 《C++ Primer》读书笔记-IO流操作
- 在模拟器上安装APK文件的方法
- 2016/08/20 集合框架
- Jquery李炎恢——33,34插件
- json-lib 之jsonConfig详细使用(转载写的不错)
- Linux命令行与shell编程笔记 结构化命令
- #371 Print Numbers by Recursion