python - 为什么当我初始化 path="" 并且不使用任何值初始化 path 时两个元素中的输出相同
问题描述
row = [ -1, 0, 1, 0]
col = [ 0, 1, 0, -1]
def isSafe(x, y, processed):
return (0 <= x < M) and (0 <= y < N) and not processed[x][y]
def dfs(board, words, processed, i, j, path=""):
processed[i][j] = True
path = path + board[i][j]
words.append(path)
for k in range(4):
if isSafe(i + row[k], j + col[k], processed):
dfs(board, words, processed, i + row[k], j + col[k], path="")
processed[i][j] = False
def solve(board):
processed = [[False for x in range(N)] for y in range(M)]
words = []
for i in range(M):
for j in range(N):
dfs(board, words, processed, i, j)
print(words)
board =[
['A', 'B'],
['C', 'D']]
(M, N) = (len(board), len(board[0]))
solve(board)
输出是
['A', 'AB', 'ABD', 'ABDC', 'AC', 'ACD', 'ACDB', 'B', 'BD', 'BDC', 'BDCA', 'BA', 'BAC', 'BACD', 'C', 'CA', 'CAB', ' CABD', 'CD', 'CDB', 'CDBA', 'D', 'DB', 'DBA', 'DBAC', 'DC', 'DCA', 'DCAB']
我对 dfs 函数感到困惑,因为每次我用空字符串初始化路径时,输出列表的第二个元素应该是B
但它是AB
,就像这个第三个元素应该是C
但在输出列表中它是ABC
等等。请解释这个递归
解决方案
推荐阅读
- grafana - Cloudwatch 指标中的元数据(替代维度?)
- ubuntu - Nuxt 与 Apache2 返回 502 代理错误:从远程服务器读取错误
- vector - 比较两个二维特征向量,找出它们的相似度
- c++ - 命名空间的类的朋友,未在命名空间中声明和定义
- clang - LLVM IR 代码中是否需要对齐指令?
- php - 将 CSV 导入 SQL 表适用于 XAMPP,但不适用于在线服务器
- c++ - 初始化 std::unordered_map 类型的 std::shared_ptr 时编译错误
- asp.net-mvc - 我可以在 VS2019 的 BeforePublish 事件中更改 webconfig 文件中的 connectionString 文本吗?
- python-3.x - 'pygame.Surface' 对象没有属性 'draw'
- bash - 如何拆分 ls -l 的输出以正确的格式显示