考虑字典:
{ "A": [ ["B"], ["C"] ],
"B": [ ["D"], ["E"] ],
"C": [ ["H"] ],
"D":[["I"],["J"]]
}
我想找到导致A的所有可能路径,这些路径不在字典键中。例如
A = [ [B], [C] ]
我们可以将其扩展为
A = [ [B, D, I],[B, D, J], [B, E], [C, H] ]
我正在尝试提出递归解决方案,但我无法完全解决问题。 有任何建议如何处理这个问题?
答案 0 :(得分:0)
你可以找到具有以下功能的所有路径,但是因为你不发布你的代码,我不知道你自己尝试了什么因此我不知道你有什么问题,我不能解释任何事情,直到你告诉关于你的尝试和这段代码:
def find_all_paths(graph, start,path=[]):
path=path+[start]
if not graph.has_key(start):
return [path]
paths = []
for nodes in graph[start]:
for n in nodes :
if n[0] not in path:
newpaths = find_all_paths(graph, n[0], path)
for newpath in newpaths:
paths.append(newpath)
return paths
g={ "A": [ ["B"], ["C"] ],
"B": [ ["D"], ["E"] ],
"C": [ ["H"] ],
"D":[["I"],["J"]]
}
Demmo:
print find_all_paths(g,'A')
[['A', 'B', 'D', 'I'], ['A', 'B', 'D', 'J'], ['A', 'B', 'E'], ['A', 'C', 'H']]
print find_all_paths(g,'B')
[['B', 'D', 'I'], ['B', 'D', 'J'], ['B', 'E']]