2D阵列连续元素算法

时间:2018-02-17 21:38:07

标签: arrays algorithm multidimensional-array pattern-matching

我有一个任务给我,要求我向用户询问2D数组的大小,我们需要创建一个具有指定大小的2D数组,所以如果用户选择8作为大小,我们会创建一个{ {1}}数组,我们随机填充8x8'X'

现在主要任务是找到该2D阵列中的'O'个数。

4个或更多'X'连接(水平group垂直OR对角线)是NOT的原因。

例如,下图中有3组:

enter image description here

我的问题是,是否存在(可能存在)处理类似问题的算法,因此如果您有任何问题,请提供阅读材料。

1 个答案:

答案 0 :(得分:1)

您的任务是查找图表中connected components的数量的特定情况。它可以使用breadth-first searchdepth-first search算法来解决。

dfs版本的伪代码:

result = 0
for every non-visited cell with 'X' value
    if groupSize(cell.x, cell.y) > 3
        result += 1
return result  

groupSize(x, y)
    size = 0 
    if cell(x, y) is inside array, non-visited and has 'X' value
        mark cell(x, y) as visited  
        size = 1
        size += groupSize(x + 1, y)
        size += groupSize(x - 1, y)
        size += groupSize(x, y + 1)
        size += groupSize(x, y - 1)
    return size