答案 0 :(得分:1)
我认为你可以先使用呼吸搜索(很好,尝试将矩阵可视化为树)
这是一个伪python实现。这样做。这对你有用吗?你有复杂的想法吗?
visited_nodes = set()
def find_adjacent_vals(target_val, cell_row, cell_column):
if inside_matrix(cell_row, cell_column)
cell = matrix(cell_row, cell_column)
if cell not in visited_nodes:
visited_nodes.add(cell)
if cell.value == target_val:
return (1 +
find_adjacent_vals(target_val, cell_row + 1, cell_column) # below
+find_adjacent_vals(target_val, cell_row - 1, cell_column) # above
+find_adjacent_vals(target_val, cell_row, cell_column -1) # left
+find_adjacent_vals(target_val, cell_row, cell_column +1) # right
))
print "Adjacent values count: " + str(find_adjacent_vals(target_val, target_row, target_column))
假设您从一个节点开始,您开始分支您之前未访问过的访问节点。这样做直到你遇到没有相同值的新单元格。由于设置逻辑,每个节点仅保证只有1个父节点。因此,没有细胞被重复计算。