算法-经典趣题-窃贼问题
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/111
一、问题
窃贼问题是一个典型的最优解的问题。窃贼问题的大意如下:
有一个窃贼带着一个背包去偷东西,房屋中共有5件物品,其重量和价值如下。
物品1:6公斤,48元。
物品2:5公斤,40元。
物品3:2公斤,12元。
物品4:1公斤,8元。
物品5:1公斤,7元。
窃贼希望能够拿最大价值的东西,而窃贼的背包最多可装重量为8公斤的物品。那么窃贼应该装下列哪些物品才能达到要求呢?
二、分析
我们来分析一下窃贼问题,窃贼问题是关于最优解的问题,可使用动态规划的思想来解最优化问题。窃贼问题求解的操作过程如下:
(1)首先创建一个空集合。
(2)然后向空集合中增加元素,每增加一个元素就先求出该阶段最优解。
(3)继续添加元素,直到所有元素都添加到集合中,最后得到的就是最优解。
采用上述思路,窃贼问题的求解算法
(1)首先,窃贼将物品i试着添加到方案中。
(2)然后判断是否超重,若未超重,则继续添加下一个物品,重复第一步。
(3)若超重,则将该物品排除在方案之外,并判断未排除的物品价值是否大于已有最大值,如果大于就继续执行;如果不满足,则不必再尝试后续物品了。
三、编程
本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/111