我发现了一个有趣的问题。
给出了一个n * m矩阵,其格式如下:
11111111
11111001
11111001
10111111
10111111
11100111
11111111
问题的目标是找到' 0' 0块。在前面的例子中,有3' 0' 0块。
我不明白如何解决这个问题。我不会要求任何代码,我想得到一些关于如何解决这个问题的提示。
答案 0 :(得分:1)
鉴于你对block的定义: 对于每一行,您检查是否存在两个(或更多)连续的零,如果是这种情况,则对于每个这样的事件,将0的块计数增加1。
您对矩阵的列重复相同的过程。
我不清楚你对问题的描述如何计算更大的块,如:
1 1 1 1
1 0 0 1
1 0 0 1
1 1 1 1
这是一个单独的块吗?
答案 1 :(得分:1)
您可以使用深度优先搜索来查找图形中的连通分量,其中顶点是0的单元格,如果两个单元格相邻,则存在两个顶点之间的边缘。