我有一个任务给我,要求我向用户询问2D数组的大小,我们需要创建一个具有指定大小的2D数组,所以如果用户选择8作为大小,我们会创建一个{ {1}}数组,我们随机填充8x8
或'X'
。
现在主要任务是找到该2D阵列中的'O'
个数。
4个或更多'X'连接(水平group
垂直OR
对角线)是NOT
的原因。
例如,下图中有3组:
我的问题是,是否存在(可能存在)处理类似问题的算法,因此如果您有任何问题,请提供阅读材料。
答案 0 :(得分:1)
您的任务是查找图表中connected components的数量的特定情况。它可以使用breadth-first search或depth-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