我试图用0和1随机填充2d数组。条件是每个1必须垂直或水平地“放置”在另一个1旁边,而不是对角线。
http://prntscr.com/8nzl19 在屏幕截图中,您会看到3个1s的块。我希望它们“连接”,这样只有一个1s的块。
是否有任何算法或其他事情要做?
答案 0 :(得分:-1)
由于一个简单的方法是用1填充整个矩阵,我假设你想要0的最小数量转为1。
您可以使用以下方法:
0
包围)到其他连通分量(B,C)。 (当然是最短路径的BFS)现在,将图1中的连接1和节点以及2,3,等等视为边缘。边缘权重(显然)将是从一个节点到另一个节点的2&2,3>等的数量。您现在可以使用Prims或Kruskals算法形成此图的MST。
对于k
连通分量为1的(n * n)矩阵,该算法采用O(k * n * n)+ O(k * k)复杂度。