下面是问题陈述:
我有m根整条的巧克力棒,还有n个孩子
想要整份巧克力。那里的巧克力总需求量
孩子们少于或等于巧克力的总量
是的你需要写一个分配巧克力的算法
孩子们在酒吧里剪得最少。
例如,对于m={1,3,7},n={1,3,4},最少的切割次数是1。
我对算法没有任何正式的经验,有没有人能给我一些提示,告诉我应该开始阅读什么来有效地解决这个问题?
最佳答案
这个任务可以简化为解决几个背包问题为了解决这一问题,通常采用贪婪搜索的原理,而割数是搜索的准则。
算法的第一个明显步骤是检查平衡。
第二步是安排巧克力和巧克力的需求,这将简化进一步的计算。这实现了贪婪搜索的原则。
第三个明显的步骤是找到并使用所有的钢筋,其尺寸符合需要。
下一步是找到并使用满足需求的所有条组合。此任务需要按需求降序进行“贪婪”搜索,这将继续进行进一步的计算。这个准则不是最优的,但它允许形成一个基本解。
如果不是所有的孩子都吃过巧克力,那么切下来的巧克力就会很明显。应根据瓷砖的降序尺寸进行搜索。首先,应该检查所有的可能性,将切割瓦片立即给两个孩子,然后相同,但是如果使用一个现有的瓦片,等等。
在那之后,有一个明显的变体“一个切一个需要”,允许形成基础变体但如果还有计算资源,可以先用它们来计算“两条缝-三个需要”等类型的选项。
进一步的优化包括返回步骤并计算以下变量。