回溯法解决01背包问题
来源:互联网 发布:java单行注释快捷键 编辑:程序博客网 时间:2024/06/06 01:07
原文参看:http://blog.csdn.net/ljmingcom304/article/details/50314839
package com.alo.offer;import java.util.Arrays;import java.util.Collections;public class Recall {private Goods goods[] ;private int totalWeight;private int currentWeight;private int n;private int bestValue;private int currentValue;public Recall(Goods[] goods, int totalWeight, int n) {super();this.goods = goods;this.totalWeight = totalWeight;this.n = n;Arrays.sort(goods,Collections.reverseOrder());}public int solve(int i) {if(i>=n) {bestValue=currentValue;return bestValue;}if(currentWeight+goods[i].getWeight()<=totalWeight) {currentWeight+=goods[i].getWeight();currentValue+=goods[i].getValue();bestValue=solve(i+1);currentWeight-=goods[i].getWeight();currentValue-=goods[i].getValue();}if(currentValue+getSurplusValue(i+1)>bestValue) {bestValue=solve(i+1);}return bestValue;}private int getSurplusValue(int i) {// TODO Auto-generated method stubint surplusValue=0;for(int j=i;j<n;j++) {surplusValue+=goods[j].getValue();}return surplusValue;}public static void main(String[] args) { Goods[] bags = new Goods[] { new Goods(2, 13), new Goods(1, 10), new Goods(3, 24), new Goods(2, 15), new Goods(4, 28), new Goods(5, 33), new Goods(3, 20), new Goods(1, 8) }; int totalWeight = 12; Recall problem = new Recall(bags, totalWeight,bags.length); System.out.println(problem.solve(0)); }}
阅读全文
0 0
- 回溯法解决01背包问题
- 用回溯法解决背包问题
- 回溯法解决0-1背包问题
- 回溯法解决0-1背包问题
- 回溯法解决0-1背包问题
- 回溯法解决0-1背包问题
- 回溯法解决0-1背包问题
- 回溯法解决0-1背包问题
- 回溯法解决0-1背包问题
- 回溯法解决0-1背包问题
- 回溯法 01背包问题
- 回溯-01背包问题
- 回溯法 背包问题
- 回溯法---->背包问题
- 回溯法之01背包问题
- 01背包问题-----回溯法的解决方案
- 回溯法求解01背包问题
- 01背包问题(回溯法实现,java)
- Riverbed SteelHead 9.5.0
- Spring+Mybatis实现动态SQL查询
- 使用typings给vscode添加更多的智能提示
- postgresql减少wal日志生成量的方法
- 生成二维码嵌入图片中 (zxing)
- 回溯法解决01背包问题
- confluence搭建部署
- Hadoop的简单单词统计案例
- 数人云|当容器与CI/CD相遇,7个建议送给你
- js 判断数组是否包含某个key
- “多线程”、“分布式”、“并行”和“并发”什么意思?有个区别?
- Word Break--lintcode
- 自定义memcpy和strcpy
- hive构建数据仓库