理论基础
贪心的本质是选择每一阶段的局部最优,从而达到全局最优
例如,有一堆钞票可以拿走十张,如何拿走最多的钱
每次拿最大的面额,最终就会拿走最多的钱,每次拿最大面额就是局部最优,最后拿走最多的钱就是全局最优
贪心算法并没有固定的套路
靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能就需要动态规划
手动模拟一下,感觉可以局部最优推出整体最优,而且想不到反例,那么就试一试贪心
贪心有时候就是常识性的推导,本应该就这么做
贪心 = 常识性推导 + 举反例
分发饼干
给定两个数组,一个是孩子胃口值,一个是饼干满足值,每个孩子只能给一块饼干,返回最多可满足的孩子数量
贪心策略:局部最优是小饼干喂给能满足的小胃口,不浪费饼干尺寸,全局最优就是喂饱尽可能多的小孩
先对饼干、胃口从小到大排序;for
循环遍历饼干,若当前饼干能满足当前胃口,则换下一胃口和下一饼干;若当前