PHP之贪心算法个人总结

本文介绍了PHP中贪心算法的应用,通过小朋友分糖果的例子展示了贪心策略的选择。首先将糖果和需求按大小排序,然后尝试匹配,无法满足需求的糖果会被废弃。贪心法求解问题需要具备贪心选择性质和最优子结构性质,这两个特性是问题能否用贪心算法解决的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

PHP之贪心算法小例子

**

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 。
贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择

举个例子:
问题: 小朋友分糖果,这时候有5个糖果还有6个小朋友,不同的小朋友对糖果的需求不同,糖果是大小不同,这时候需要找一个最优的选择,吧有限的糖果尽量分给更多的小朋友。

那么现在已知的参数下图表示,小朋友上方数字是满足需求的大小,糖果下方数字则为糖果的大小。

糖果小朋友
怎么吧糖果分给更多的小朋友呢,这时候有个规则一个小朋友只能拿到一个糖,而一个糖果被分给小朋友之后则不能再使用,而且糖果的大小必须大于小朋友的需求,否则就无法满足,并且不可以用多个糖果分给一个小朋友看下图

在这里插入图片描述
根据实际的需求来做算法首先要理解思路,可以先吧糖果大小和小朋友所需做个排序,从小到大来进行排序,如果第一个糖果也就是最小的糖果无法满足第一个小朋友,则肯定不能满足比第一个小朋友需求量还大的小朋友,所以此糖果废弃去比较下一个糖果。

在这里插入图片描述

排序完成后思路瞬间明确那么可以搞代码了!开心时刻----

   /**
     * Notes: 贪心算法
     * Author: 白猫!
     * DateTime: 2021/3/12 11:08
     * @param $child_array 孩子需求
     * @param $candy_array 糖果需求
     * return $child 满足孩子个数
     */
    public 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值