2016-07-31 55 views
-3

两点之间的最短路径我有类似下面的列表: a =[1,2,3,4]找到一个圆形的列表蟒蛇

该列表是一个圆形的列表。 列表中的值不代表节点,但列表的索引代表节点。 因此,该列表可能包含重复的元素。 示例,

if i take index (1,3) 
(ie source is at index 1,and destination is at index 3) . 
the shortest path is 1->4 

if i take index (0,2) , i get two shortest paths 
1->2->3 and 
1->4->3 

我该如何在python中执行此操作?

+1

阅读教程。 – Julien

+2

你已经试过了什么? – DeepSpace

+2

这里有一件事要考虑:*在没有重复的列表*中,圆形列表中两个点之间的最短路径等于(a)不是“循环”的最短路径中的较小者,以及(b)最短的路径。你应该能够扩展这个逻辑来处理节点可以重复的情况。 – jedwards

回答

0

看来,这是你想要什么:

L = [1, 2, 3, 4, 5, 6] 
a = L[1] 
b = L[3] 
cnt1 = [] 
cnt2 = [] 
for x in range(L.index(a), L.index(b) + 1): 
    cnt1.append(L[x]) 
for x in range(L.index(a), L.index(b) -(len(L) + 1), -1): 
    cnt2.append(L[x]) 

if len(cnt1) <= len(cnt2): 
    print(cnt1) 
else: 
    print(cnt2)