Scratch理解贪心算法原理

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

        贪心算法有一道经典的分糖果的题目,我们今天就用Scratch来理解如何用贪心算法解决这个问题。

        如图片上有4个小朋友,小朋友头上的数字代表需要吃的糖的满足度。下面有4颗糖,糖上的数字代表着对应的满足度。

        需要使用贪心之前,我们第一步需要将小朋友和糖果的满足度进行按顺序排序。

将小朋友对糖果的满足度建立数组S[   ],糖果的满足度为数组C[    ]。

        此时我们开始对比,第一个小朋友对糖果的满足度s[0]=3,而糖果1的满足度为c[0]=2。

        而c[0]>s[0]不成立,即糖果1的满足度不能够满足小朋友1的满足度,我们由此便能知道,糖果1的满足度定然不能满足后面的小朋友,所以我们就可以将糖果1丢弃。

         这时我们看糖果2的满足度为6,c[1]=6.而小朋友1的满足度为s[0]=3。c[1]>s[0],即糖果2能够满足小朋友1的满足度需求,便将糖果2分给小朋友1吃。

         因为小朋友1已经分到了糖果,所以我们不用再给小朋友1分糖果。接下来便是给小朋友2分糖果。小朋友2对糖果的满足度s[1]=5,而糖果3提供的满足度c[2]=8。c[2]>s[1],即糖果3能够满足小朋友2的满足度需求,便将糖果3分给小朋友2吃。

       最后还剩下1个糖果,c[3]=21。小朋友3对糖果的满足度为s[2]=11。c[3]>s[2],

即糖果4能够满足小朋友3的满足度需求,便将糖果4分给小朋友3吃。

 由此,因为糖果已经分完了,所以分糖果结束,我们的糖果能够满足3位小朋友的需求。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值