大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
贪心算法
题目解答方法的文字分析
我们需要找到一个n值,使得牧场主至少发现了n项研究成果,且每个成果产生的乳量提升至少是n公斤。然后,我们取其中最大的n作为乳牛指数。
具体步骤如下:
- 首先,我们将milk_production数组按照非递减顺序排序,从小到大排列。
- 接着,我们从数组的末尾开始逐个尝试每个n值,从n=1开始。
- 对于每个n值,我们检查从数组末尾往前的前n项是否满足每个成果产生的乳量提升至少是n公斤的条件。
- 如果满足条件,我们就找到了一个满足要求的n值,继续尝试更大的n值,直到找到乳牛指数为止。
- 最后,返回找到的乳牛指数。
本题解析所用的编程语言
C++
完整且正确的编程代码
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param milk_production int整型vector * @return int整型 */ int cow_hp(vector<int>& milk_production) { int n = milk_production.size(); sort(milk_production.begin(), milk_production.end()); // 按非递减顺序排序 int hp = 0; // 乳牛指数 for (int i = n - 1; i >= 0; --i) { int nValue = n - i; // 当前尝试的n值 if (milk_production[i] >= nValue) { hp = max(hp, nValue); // 更新乳牛指数 } else { break; // 不满足条件,退出循环 } } return hp; } };