我正在用python编写以下程序:
def find_graph(graph, start, end, path=[]):
f=0
if start==end:
if start in graph:
return start
if not start in graph:
return None
if not end in graph.values():
return None
path.append(start)
for i in graph[start]:
if end in graph[start]:
path.append(end)
f=1
break
else:
for j in graph[start]:
if f==1:
break
else:
find_graph(graph, j, end, path)
return path
p=find_graph({'A': ['B','C'], 'B': ['C', 'D'], 'C': 'D', 'D': 'E'}, 'A', 'E')
print(p)
它还没有完成,但我只想知道,它什么时候到了最后一步,也就是说,它完成了路径.附加('E'),则f=1并中断。然后它转到return path
行;接下来它应该返回这个值,但是它转到else
条件中的find_graph(graph, j, end, path)
行。为什么会这样?我把f
标记也放进去,只是为了不这样做,但是当它变成return path
f
时,我不知道为什么。请帮忙。你知道吗
已经好几年了,让我们来解决这个问题。
f
标志变量在函数返回之前设置为1,因此测试f == 1
永远不会为真。这似乎也是一个问题:作为结束节点,
'F'
可以在'B': ['C', 'D', 'F'],
中并且没有子节点,但是即使图形有效,上述操作也会失败。儿童有两种不同的结构,这张图很复杂:而不是简单地:
但我们可以解决这个问题。最后,您找不到一个图或一个图中的路径,而是一个图中的所有路径,因此我们需要不同的名称,并确保始终返回一个列表列表(或空列表):
输出
我们可以看到,从“A”到“E”有三条路径,代码比您尝试编写的要简单。你知道吗
相关问题 更多 >
编程相关推荐