大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

贪心算法

题目解答方法的文字分析

我们需要找到一个n值,使得牧场主至少发现了n项研究成果,且每个成果产生的乳量提升至少是n公斤。然后,我们取其中最大的n作为乳牛指数。

具体步骤如下:

  1. 首先,我们将milk_production数组按照非递减顺序排序,从小到大排列。
  2. 接着,我们从数组的末尾开始逐个尝试每个n值,从n=1开始。
  3. 对于每个n值,我们检查从数组末尾往前的前n项是否满足每个成果产生的乳量提升至少是n公斤的条件。
  4. 如果满足条件,我们就找到了一个满足要求的n值,继续尝试更大的n值,直到找到乳牛指数为止。
  5. 最后,返回找到的乳牛指数。

本题解析所用的编程语言

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;
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!