题目描述就不用说了,这里直接给上数据:
背包的容量 : 20
物品的质量:2 3 4 5 9
物品的价钱:3 4 5 8 10
其实这种问题,简单了就是每走一步都会有选和不选的两种情况,而这两种情况,必须要选择其中最好的情况:
使用B(K,W): k 个商品 ; W 剩下的空间,来表示当前的状态。

可以将选择树和状态方程相对应:

对于最终的数组都出出现以下情况:

所以对于背包问题有如下代码:
package com.lanqiao.study;
/**
* 算法描述
* 背包重量:2 3 4 5 9
* 价值: 3 4 5 8 10
* 背包容量: 20
* B(K,W): k 个商品 ; W 剩下的空间
*/
public class 背包问题 {
public static void main(String[] args) {
//对于每一种的商品都有偷和不偷的两种情况
//偷 : 背包的重量会减少相应的重量,不偷,会将物品减一,商品的数量会减少
//数组的行代表的是K个商品,列代表的是
int[][] dp = new int[6][21];
int[] p = {0, 3, 4, 5, 10, 8};

这篇博客探讨了如何使用动态规划解决背包问题。通过建立状态方程B(K, W)表示在剩余空间W的情况下选择k个商品的最佳策略,并分析了选择树的不同情况,最后给出了实现背包问题的代码示例。"
134307774,10220647,多模态深度学习:Triplet、Spatial Group Enhance、NAM、S2 注意力机制解析,"['深度学习', '多模态处理', '注意力机制', '计算机视觉', '自然语言处理']

893

被折叠的 条评论
为什么被折叠?



