大家好,我是开车的阿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;
}
};

京公网安备 11010502036488号