码迷,mamicode.com
首页 > 其他好文 > 详细

贪心策略---分配饼干

时间:2019-06-28 23:14:38      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:ssi   des   href   class   最优   思路   problem   nat   ati   

??保证每次操作都是局部最优的,并且最后得到的结果是全局最优

分配饼干

455. Assign Cookies (Easy)

Input: [1,2], [1,2,3]
Output: 2

Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2.
You have 3 cookies and their sizes are big enough to gratify all of the children,
You need to output 2.

题目描述:

??每个孩子都有一个满足度,每个饼干都有一个大小,只有饼干的大小大于等于一个孩子的满足度,该孩子才能获得满足。求解最多可以获得满足的孩子数量

思路分析:

???给一个孩子的饼干应当尽量小又能满足该孩子。这样大饼干就可以用来满足满足度较大的孩子。因为最小的孩子最容易得到满足,所以先满足最小的孩子。

证明:

???假设在某次选择中,贪心策略选择给当前满足度最小的孩子分配第 m 个饼干,第 m 个饼干为可以满足该孩子的最小饼干。假设存在一种最优策略,给该孩子分配第 n 个饼干,并且 m < n。我们可以发现,经过这一轮分配,贪心策略分配后剩下的饼干一定有一个比最优策略来得大。因此在后续的分配中,贪心策略一定能满足更多的孩子。也就是说不存在比贪心策略更优的策略,即贪心策略就是最优策略。

代码:

public int findContentChildren(int []g,int[]s){
    Arrays.sort(g);
    Arrays.sort(s);
    int gi=0,si=0;
    while(gi<g.length&&si<s.length){
        if(g[gi]<=s[si])
            gi++;
        si++;
    }
    return gi;
}

贪心策略---分配饼干

标签:ssi   des   href   class   最优   思路   problem   nat   ati   

原文地址:https://www.cnblogs.com/yjxyy/p/11104894.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!