2016-07-31 68 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)