将每个“奖项”看成一个容量为 limit 的“箱子”,每个奖品是一件物品,价值即体积。
题目给定的获奖者策略是:在不超过 limit 的前提下优先选择价值最高的奖品并持续选择,直到无法再选。
这与我们按同样的规则把物品装进箱子完全一致,因此问题等价为:用“在剩余容量内每次放入当前能放的最大物品”的贪心规则进行装箱,所需箱子(奖项)的最少个数。
实现方法:
multiset/TreeMap 或“排序 + 计数”)。rem = limit;部门准备了一批奖品用于举办抽奖活动,奖品的价值为给定的正整数数组 values,其中 values[i] 表示第 i 个奖品的价值。
每位获奖者可以选择不限个数最大价值 limit 的奖品组合,获奖者选择奖品的策略为在 limit 限制内优先选择单价最高的奖品,请计算最少可以设置多少个奖项;
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写