我有一个矩阵如下(Python):
matrix = """
...o..o.o
...oo....
...o....o
..o.ooo..
o...o....
.oo......
..o....o.
.oo......
.........
"""
其中“o”是一个障碍,我需要找到矩阵中最大的正方形。 并将相应的“.”替换为下面的“x”
"""
xxxo..o.o
xxxoo....
xxxo....o
..o.ooo..
o...o....
.ooxxxx..
..oxxxxo.
.ooxxxx..
...xxxx..
""
在这里发现了类似的问题(所以),但没有任何帮助
它可以使用动态规划以
O(n²)
的复杂度完成。这个想法是,只有当“向上”、“向左”和“向上向左”的正方形具有相同的尺寸时,才会有一个更大的正方形。否则,当前单元格的最大平方就是上述平方中的最小平方,增加1。 代码如下:最后,当您必须用所有
x
替换最大的正方形时,只需检索最大正方形右下角顶点的索引(存储在max_square
)并进行列表替换编辑:如果您有多个最大的正方形,而不是声明一个
max_square
,您有一个它们的列表(在更新代码中,我将其重命名为max_squares
)。然后,每次你遇到一个与最大的正方形尺寸相同的正方形,你就把它附加到max_squares
上。然而,考虑重叠平方的可能性。正如我之前所建议的,如果您可以建立一个正确的数据结构,首先包含所有数量的连续点,然后从那里开始工作,那么解决方案就更容易了。下面是示例代码:(第1部分回答这里,第2部分-留作练习)此代码是从其他S/O帖子(@AlainT)中采用的,并相应地修改以适合此问题/格式。 (顺便说一句,您的代码示例根本不起作用,可能是格式问题?)
相关问题 更多 >
编程相关推荐