问题描述
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 (将#修改为@)