问个路径问题

bolome 2012-01-02 10:09:47
有以下列表
list=[['A','B'],['B','C'],['B','E'],['C','H'],['E','H'],['C','D'],['H','D']]

请问如何查出A到H的路径
A-B-C-D-H
A-B-C-H
A-B-E-H
...全文
84 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
libralibra 2012-01-03
  • 打赏
  • 举报
回复
构造一个树,把这些字母挂着就行了
用list代替下


#! /usr/bin/env python
# coding: cp936

lst = [['A','B'],['B','C'],['B','E'],['C','H'],['E','H'],['C','D'],['H','D']]

pathlist = []

for pair in lst:
if len(pathlist)==0:
pathlist.append(''.join(pair))
pathlist.append(''.join(pair[::-1]))
else:
newlist = []
for plist in pathlist:
if plist.endswith(pair[0]):
newlist.append(plist+pair[1])
elif plist.endswith(pair[1]):
newlist.append(plist+pair[0])
pathlist.extend(newlist)

print pathlist

for path in pathlist:
if path.startswith('A') and path.endswith('H'):
print '-'.join(path)


结果:

['AB', 'BA', 'ABC', 'ABE', 'ABCH', 'ABEH', 'ABCHE', 'ABCD', 'ABCHD', 'ABEHD', 'ABCDH']
A-B-C-H
A-B-E-H
A-B-C-D-H

libralibra 2012-01-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bolome 的回复:]

感谢各位。
结果是可以了。要求我没说明白。现在发现B-H是查不出来,H-B也不行。只有A开头的才可以。
[/Quote]
for path in pathlist搜索每个path是否同时包含B和H然后截取字符串就行了
bolome 2012-01-03
  • 打赏
  • 举报
回复
感谢各位。
结果是可以了。要求我没说明白。现在发现B-H是查不出来,H-B也不行。只有A开头的才可以。
panghuhu250 2012-01-03
  • 打赏
  • 举报
回复
这个是算法问题:Floyd's Algorithm

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧