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

本文共 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

你可能感兴趣的文章
常用的数据库连接写法
查看>>
bitmap算法
查看>>
base64图上上传保存到服务器
查看>>
乔春洋:文化资源与文化产业化
查看>>
有关libpthread.so库的问题
查看>>
使用zt-exec库定时清理linux休眠进程
查看>>
比较好用的js文字无缝滚动,支持ff ie678
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
VSAN 和 vSphere Replication 的互操作
查看>>
.NET框架设计—常被忽视的C#设计技巧
查看>>
光云软件一面
查看>>
我的作业,来看看把
查看>>
面试宝典系列-MySQL缓存详解
查看>>
Azure证书生成问题
查看>>
管家婆软件
查看>>
8 quick ways to clear up drive space in Windows 10
查看>>
Apache Zeppelin连接Oracle数据库
查看>>
一张图告诉你,只会jQuery还不够!
查看>>
ios中timer相关的延时调用需要注意的地方
查看>>