如何解决为什么当我初始化path =“”并且未使用任何值初始化path时,两个元素的输出都相同
row = [ -1,1,0]
col = [ 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,i + row[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,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
,并且像这样的第三个元素应该是{{ 1}},但在输出列表中为C
,依此类推。请解释此递归
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。