我在我的大学有一个项目我认为问题应该通过背包算法来解决。
我们有大小的二次区域:
n x n.
大小来自命令行。 在输入文件中,我们存储在行中的实数。每个数字都是我们将在我们区域设置的圆的直径(称为“d”)。在每种情况下,n尺寸都大于直径。该文件包含大量数字,因此我们有很多案例可供选择。
我们需要创建方法“pack()”并在方法内部实现从文件中获取任何圆圈的代码,然后将它们放入区域内,使区域占用尽可能多的圆圈(我们需要用圆圈占据n区域的最高可能值)。这意味着我们正在寻找那些将取代我们地区最大部分的数据(圈子)。
我在考虑这个问题,但没有找到任何解决方案。从我的角度来看,我需要修改背包算法,但不知道如何。在我的选择中,最重要的部分是选择算法。
你们能指点我正确的算法吗?任何提示都会非常感激,因为我在这个问题上浪费了。