自从小 Kalle 赢得了一张刮刮乐的免费洗车券后,他开始以不同的方式看待生活。他开始注意到自己在日常生活中拥有巨大的好运。他最近经历的一些非凡事件包括:因为睡过头而赢得了城市年度懒惰比赛;尽管乘坐最后一班公交车,每天仍能按时到校;以及通过随机选择答案在大学入学考试中获得了 2 分中的 1.4 分。
他现在打算利用他巨大的好运来帮助议会:他计划解决一个臭名昭著的背包问题实例。议会有 瑞典克朗的 fika 预算,他们的 fika 供应商有 种不同的糖果袋可供选择。每个糖果袋 都有一个美味度 和一个价格 瑞典克朗。每个糖果袋只能购买一次。目标是购买所有糖果袋的一个子集,使得总花费不超过 ,同时最大化总美味度。一般来说,这是一个非常难以解决的问题,但他希望通过利用他的好运来快速解决它。
他的想法如下:首先,取出所有糖果袋并将它们随机排列。然后,忽略前 个糖果袋。之后,他将按顺序考虑每个糖果袋,如果买得起就购买,否则就跳过并继续。他会继续这个过程,直到他考虑完所有 个糖果袋。
如果他选择的顺序足够幸运,某个 值将给出最优解。经过大量努力,Kalle 已经改变了所有糖果袋的顺序,他现在请求你帮助他为每个 执行他的算法。