我该如何回答这个贪婪的算法问题?
Posted
技术标签:
【中文标题】我该如何回答这个贪婪的算法问题?【英文标题】:How do I answer this greedy algorithm question? 【发布时间】:2020-04-17 21:53:50 【问题描述】:我正在学习贪心算法及其应用。下面的问题是书中提供的学习贪心算法的众多问题中的第一个。
Q) 有 n 个孩子,你有 m > n 个巧克力要分发。你必须给 每个孩子正好一块巧克力(当然,你不能把同样的巧克力分给两个不同的 孩子们)。每个孩子都有一个食欲因子 ai,1 ≤ i ≤ n 孩子会很高兴;每个巧克力的大小为 sj,1 ≤ j ≤ m。你的目标是最大化 快乐孩子的数量,即我分配了巧克力 j 且 gi ≤ sj..的孩子。
如果有人能帮助我解决这个问题,我将不胜感激。还有一些这样的,但我想如果我能做到这一点,我就能做到。
谢谢!
【问题讨论】:
你自己在哪里解决问题?即使是部分解决方案也将帮助其他人写出最适合您问题的好答案。 在问题中,greed factor gi
应该是appetite ai
。问题陈述中的greed
一词与标题中的greedy
一词无关。
尚未开始回答,但我知道我们必须按升序分配 cookie,并尽可能为其分配最不贪婪的孩子
@Mikel 是的,这就是算法,也是答案。
@user3386109 我是否必须写其他任何内容或只写问题所说的算法?谢谢!
【参考方案1】:
您已正确识别出 cmets 中的算法:
我们必须尽可能按升序分配 cookie 分配它最不贪心的孩子
你可以把算法分解成简单的步骤,像这样
Sort the cookies ascending by size
For each cookie in the sorted list
if the least greedy child remaining will be happy with that cookie
give the cookie to the least greedy child
【讨论】:
以上是关于我该如何回答这个贪婪的算法问题?的主要内容,如果未能解决你的问题,请参考以下文章