2020-11-25

def findAllPath(graph,start,end,path=[]):
path = path +[start]
if start == end:
return [path]

paths = []     
for node in graph[start]:
    if node not in path:
        newpaths = findAllPath(graph,node,end,path) 
        for newpath in newpaths:
            paths.append(newpath)
return paths

def findShortestPath(graph,start,end,path=[]):
path = path +[start]
if start == end:
return path

shortestPath = []
for node in graph[start]:
    if node not in path:
        newpath = findShortestPath(graph,node,end,path)
        if newpath:
            if not shortestPath or len(newpath)<len(shortestPath):
                shortestPath = newpath
return shortestPath

search1=input(“请输入起点:”)
search2=input(“请输入终点:”)
graph = {‘A’: [‘B’, ‘C’,‘G’,‘F’],
‘B’: [ ‘A’,‘D’,‘E’,‘F’],
‘C’: [‘A’,‘D’,‘G’],
‘D’: [‘C’,‘B’,‘E’],
‘E’: [‘B’,‘D’,‘F’],
‘F’:[‘A’,‘B’,‘E’],
‘G’:[‘A’,‘C’]}

allpath = findAllPath(graph,search1,search2)
print(’\n所有路径:’,allpath)

shortpath = findShortestPath(graph,search1,search2)
print(’\n最短路径:’,shortpath)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值