代码随想录笔记--贪心算法篇

1--贪心算法

主要思路:

        通过局部最优推导全局最优;

2--分发饼干

代码随想录笔记--贪心算法篇_第1张图片

主要思路:

        基于贪心算法,每次都尽可能用大的饼干去喂胃口大的孩子,贪心地节省饼干;

#include 
#include 
#include 

class Solution {
public:
    int findContentChildren(std::vector& g, std::vector& s) {
        if(s.size() == 0) return 0;
        // 从小到大排序饼干
        std::sort(g.begin(), g.end());
        std::sort(s.begin(), s.end());
        
        int res = 0; // 结果
        int cookie_idx = s.size() - 1; // 从最后一个饼干开始分发

        // 贪心地每次用大饼干去喂胃口大的孩子
        for(int child_idx = g.size() - 1; child_idx >= 0; child_idx--){
            if(cookie_idx >= 0 && s[cookie_idx] >= g[child_idx]){ // 饼干能满足孩子的胃口
                res++;
                cookie_idx--;
            }
        }
        return res;
    }
};

int main(int argc, char* argv[]){
    // g = [1,2,3], s = [1,1]
    std::vector child = {1, 2, 3};
    std::vector cookie = {1, 1};
    Solution S1;
    int res = S1.findContentChildren(child, cookie);
    std::cout << res << std::endl;
    return 0;
}

3--

你可能感兴趣的:(算法)