描述 2020-2021-2 程序设计基础单开班第三题 有n个苹果(0<n<101),已知其重量(假设为正整数)。现有1个承重为m的包,如何挑选,使包中的苹果数最多。 输入描述 先输入m、n(0<n<101),接下来输入n个整数,表示苹果的重量。输入苹果重量时,按非递减顺序进行输入 输出描述 输出只有1行,输出包能装的最多苹果数目。
时间: 2023-05-25 20:01:34 浏览: 134
2023-03-31 项目笔记-第一阶段-4.变量、常量 4.3 变量的分类
A:
首先我们需要知道的是贪心算法,即每次选取当前最优的方案,使得整体最优。
对于这道题,我们可以考虑贪心策略为先从重量最小的苹果开始选取,直到承重量达到上限m或者所有苹果都被选完为止。
具体步骤如下:
1. 读入承重量m和苹果的数量n;
2. 读入n个苹果的重量,按非递减顺序排序;
3. 定义一个变量sum记录已经装入包中的苹果重量总和,一个变量count记录已经装入包中的苹果数量;
4. 从重量最小的苹果开始,依次加入包中,直到重量超过了m或者所有苹果都被选完为止,每次加入就将sum和count分别加上当前苹果的重量和1;
5. 输出count,即为最多能装下的苹果数目。
代码实现如下:
阅读全文