美文网首页
0/1背包问题(第一版)

0/1背包问题(第一版)

作者: 大桥酱 | 来源:发表于2017-09-30 09:45 被阅读43次

如果是可切分的背包问题,那没什么难度。基本上就是选择一个性价比最高的物品先放进去,放完发现没有了,然后放性价比第二高的,以此类推。

那么如果是商品无法切割。背包重量有限呢?这种情况就需要采用动态规划的思想,来完成最优的规划。

列出公式如下,如果物品质量大于袋子质量,那么就是在剩下的物品中求得最优即可。如果物品的质量小于袋子的质量,那么在两种方案中选择最优即可。

具体的代码我已经实现:

首先,我先定义了一个这样的数据结构

实际上,表示物品的价值和重量用二维数组就可以了,但Java总爱面向对象,这种自定义的数据结构会大大丰富可用性,也有较高的可移植性

每定义一个数据结构记得内部类里面写上对应的get 和 set 方法

在main函数里面获取主要的参数,并对product List进行初始化处理,为什么要进行初始化呢,因为后面要用到,背包问题的第二版我会写一个不用初始化数据的代码

这样就获得了数据

接下来最重要的一步就是对数据进行处理

其实主要是实现了上面的公式

难点在于数据的初始化,到底是从1 开始 还是 从0 开始

怎么找到具体的输出哪个选项呢

相关文章

  • 0/1背包问题(第一版)

    如果是可切分的背包问题,那没什么难度。基本上就是选择一个性价比最高的物品先放进去,放完发现没有了,然后放性价比第二...

  • Algorithm进阶计划 -- 动态规划(下)

    经典动态规划背包问题最长子序列问题 1. 背包问题 1.1 0-1 背包问题 0-1 背包问题,描述如下: 上面...

  • 背包问题

    背包问题属于典型的动态规划问题。这里我们将详细介绍0-1背包,完全背包和多重背包问题 一、 0-1背包 有N件物品...

  • 算法-动态规划-背包问题

    背包问题是基础的动态规划问题,包含了0-1背包,完全背包,多重背包等。 0-1背包 存在容量为 的背包 , 件体...

  • 0/1背包问题

    输出结果

  • 背包问题

    1、前言 背包问题是典型的动态规划问题,它有非常多的类型,本文讨论最常见的0-1背包问题 0-1背包问题描述:有一...

  • 0/1背包问题 0/1 Knapsack

    题目列表 相等子集划分问题 Equal Subset Sum Partition 416. 分割等和子集 子集和问...

  • 0-1背包问题(回溯法)

    0-1背包问题 在0 / 1背包问题中,需对容量为c 的背包进行装载。从n 个物品中选取装入背包的物品,每件物品i...

  • 0/1背包和多重背包问题

    Given weights and values of n items, put these items in a...

  • 背包问题之0-1背包

    背包问题是典型的动态规划例子。我们可将子问题的解存储下来,以免计算其母问题时需用到子问题结果而重复计算。 问题阐述...

网友评论

      本文标题:0/1背包问题(第一版)

      本文链接:https://www.haomeiwen.com/subject/etkgextx.html