你可以找到所有具有以下功能的路径,但是因为你不会发布你的代码,我不知道你试图通过你自己,因此我不知道你有什么问题,我不能解释任何事情,直到你告诉你的尝试和验证码:
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']]
“我想拿出一个递归解决方案,但我不能得到任何工作充分”。请在这里发布您的“非工作”代码。 “有什么建议如何解决这个问题?”递归绝对是一种方法(深度优先搜索)。 – Sriram 2014-12-02 07:09:03