Bob 是个小偷。 经过几个月的精心策划,他终于成功破解了一家高档商店的安保系统。
摆在他面前的是许多物品,每件物品都有自己的价值和重量。 Bob 很想把这些物品全部拿走,但他的背包只能装下有限的重量。 Bob 必须仔细考虑该拿走哪些物品,才能让自己所选物品的总价值最大化。
你的任务是决定带走哪些物品,使得 Bob 所选物品的总价值最大,同时要考虑背包的承重上限。
物品会用一个数组表示。 每件物品都有重量和价值。 给出的所有值都严格为正数。 每件物品 Bob 只能拿一件。
例如:
Items: [
{ "weight": 5, "value": 10 },
{ "weight": 4, "value": 40 },
{ "weight": 6, "value": 30 },
{ "weight": 4, "value": 50 }
]
Knapsack Maximum Weight: 10
在上面的例子中,第一件物品的重量是 5,价值是 10,第二件物品的重量是 4,价值是 40,依此类推。 在这个例子中,Bob 应该拿走第二件和第四件物品,才能使总价值最大,这里就是 90。 因为背包的重量上限是 10,所以他拿不到比 90 更大的价值。