零一背包

实践练习C++17

简介

拉克帕是一名夏尔巴人登山向导和搬运工。经过数月规划,探险队即将出发,她的报酬取决于运到大本营的物品价值。

面前有许多各具重量和价值的物品。她很想全带上,但背包承重有限。

任务说明

在不超过背包容量的前提下,选择物品,使总价值最大。

输入是物品列表,每项都有重量与价值,所有值严格为正。每件物品最多取一次。

例如:

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,其余依此类推。承重上限 10 时,应取第二和第四件,总价值 90,无法获得更高价值。