天天看点

【算法数据结构Java实现】Java实现动态规划(背包问题)1.背景2.题目3.代码实现

     追随着buptwusuopu大神的脚步,最近在研习动态规划。动态规划应该叫一种解决问题的思想,记得又一次去某公司面试就被问到了这个。

       多于动态规划的理解,大致是这样的,从空集合开始,每增加一个元素就求它的最优解,直到所有元素加进来,就得到了总的最优解。

       比较典型的应用就是背包问题,有一个重量一定的包,有若干件物品,他们各自有不同的重量和价值,怎样背才能取得最大价值。

       错误的理解:去价值/重量比最大的物品多装(之前我也是这么想的,但是在背包重量一定的情况下这么做并不合理,范例很容易想到)

       要实现的题目是摘抄于另一位大神的博客,讲的很好,可惜不是java实现的,有兴趣可以看下面的引用。

题目描述:

有编号分别为a,b,c,d,e的五件物品,它们的重量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,现在给你个承重为10的背包,如何让背包里装入的物品具有最大的价值总和?

name

weight

value

1

2

3

4

5

6

7

8

9

10

a

12

15

b

11

c

d

e

/********************************

* 本文来自博客  “李博Garvin“

******************************************/