博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
背包问题
阅读量:6859 次
发布时间:2019-06-26

本文共 1374 字,大约阅读时间需要 4 分钟。

假定背包的最大容量为W,N件物品,每件物品都有自己的价值和重量,将物品放入背包中使得背包内物品的总价值最大。这就是动态规划法中的经典的背包问题。

例如:

有一个包,最多可以装10kg的物品,现在你有4件物品,重量分别为:5 4 6 3,对应的价值为:10 40 30 50.请问如何能使包装的物品价值最大,最大为多少?

类似问题:给你几张钱币,每张钱币有一定的面值,以及一个总值,问如何组合钱币能使它等于这个总值,并且用的钱币最少。

 

背包问题代码:

 

public class Package0_1 {    public static int package0_1(int totalW, int[] weight, int[] value) {        if(totalW<=0 || weight==null || weight.length<=0 || value==null || value.length<=0) {            return 0;        }                int n = weight.length;        int[][] dp = new int[n][totalW+1];        for(int i=0; i
=weight[0]) { dp[0][i] = value[0]; } } for(int i=1; i
=0) { left = dp[i-1][j-weight[i]]+value[i]; } dp[i][j] = Math.max(dp[i-1][j], left); } } //打印dp数组// for (int[] rows : dp) {// for (int col : rows) {// System.out.format("%5d", col);// }// System.out.println();// } return dp[n-1][totalW]; } public static void main(String[] args) { int totalW = 10; int[] value = {10, 40, 30, 50}; int[] weight = {5, 4, 6, 3}; System.out.println(package0_1(totalW, weight, value)); }}

 

转载于:https://www.cnblogs.com/loren-Yang/p/7481570.html

你可能感兴趣的文章
C语言 · 出现次数最多的数
查看>>
正则获取HTML代码中img的src地址
查看>>
Java 根据当前时间获取明天、当前周的周五、当前月的最后一天
查看>>
3.View绘制分析笔记之onLayout
查看>>
linux语言设置i18n(转)
查看>>
双链表插入 删除详解
查看>>
迄今为止计算机视觉领域超有实力的研究人物主页
查看>>
Java中值类型和引用类型的区别
查看>>
php 页面间传递数据
查看>>
[Node.js] Initialize a LoopBack Node.js Project through the CLI
查看>>
nginx补丁格式说明(CVE-2016-4450为例)
查看>>
C#编程(八十一)---------- 捕获异常
查看>>
Kinect2.0点云数据获取
查看>>
Omi新成员omi-router正式发布
查看>>
CentOS7.2 安装Tomcat
查看>>
二进制数组
查看>>
how tomcat works 总结
查看>>
Java+FlashWavRecorder实现网页录音并上传
查看>>
月球美容计划之最小生成树(MST)
查看>>
块状元素与内联元素的差别
查看>>