我得到了一个二维二进制数组。一些点处于打开状态,一些点处于关闭状态(1表示打开,0表示关闭)。
我知道" on“点之前是通过在2d数组上放置圆圈来创建的。这些圆具有相同的半径,每次放置一个圆时,圆内的点都会变为1而不是0。所有的圆圈都在数组的边缘内,接触圆圈边缘的点被点亮。
下面可以看到一个插图。圆圈是随机排列的,可能会相碰。
请注意,圆内的点为1,其他所有点均为0。
你能找出有多少个圆圈,仅仅通过观察二维数组,在我放置它们之后,没有圆圈?这个问题是可以解决的吗?
我解决这个问题的尝试是:
首先,我假设我的圆可以包含如图所示的点(半径足够大,可以包含4到7个点。然后我试着对圆圈可能有的方向进行分类,但是有很多种。

我想找到这两个圆圈。请注意,它们不能重叠,但可以只是一个靠近另一个。
发布于 2018-07-23 21:52:23
为什么不随机生成圆圈并计算它们呢?
当你插入一个新的圆时,只要检查它们是否重叠即可。如果您尝试了一定的次数,但未能插入新的圆,请停止插入新的圆。对于最后一个值,您可能需要尝试一下。
你可以重复这个过程几次,然后像这样平均结果。
https://stackoverflow.com/questions/51478118
复制相似问题