找到NxN矩阵中的所有子矩阵(矩形)

时间:2016-03-02 14:16:58

标签: algorithm data-structures

给定NxN矩阵填充0& s&数字(1,2,3 .... k)的 这样k的范围为[1,N]。

需要找到所有子矩阵,即给定矩阵中的矩形。

E.g。
2 3 4 0 0
1 2 5 0 0
1 3 4 0 0
0 0 0 1 1
1 4 0 3 4

所以对于这种情况 我们有3个子矩阵  2 3 4
 1 2 5
 1 3 4

1 4

1 1
3 4

找出给定矩阵中所有子矩阵的合适算法是什么? 所有子矩阵都应该是一个矩形 例如: 1 3 0
2 0 3 0 2 0

答案是4个子矩阵

1 3

3

2

2

1 个答案:

答案 0 :(得分:1)

这是在图表中查找所有连接组件的问题 https://en.wikipedia.org/wiki/Connected_component_%28graph_theory%29

基于零的矩阵元素是“分隔符”,意味着没有连接,而非零相邻元素是连接的。

最后,归结为你的意见。如果您有保证,您将始终获得有效输入,则此方法将始终生成有效输出 但是,如果没有这样的保证,那么您将需要对发现的连接组件进行简单的后处理,您将在其中验证并过滤每个组件。