2017-06-01 94 views
0

我是Python新手,我想學習Backtracking算法。我看了一些教程,我創造了這個代碼:Python Bkt - 列表索引超出範圍

x = [] 
pod = [] 
class def_pod: 
    ins1 = 0 
    ins2 = 0 
    def __init__(self, name): 
     self.name = name 
ins_start = int(input("Insula de start: ")) 
n = int(input("Numar de poduri: ")) 
def Plimbare (insula_crt, k): 
    if n==k: 
     print(x) 
    else: 
     for i in range(0,n-1): 
      if POSIBIL(i,k,insula_crt): 
       x[k] = i 
       if insula_crt == pod[i].ins1: 
        ins=pod[i].ins2 
       else: 
        ins=pod[i].ins1 
       Plimbare(ins,k+1) 

def POSIBIL (alfa,k,ins_crt): 
    for j in range(0,n-1): 
     if x[j] == alfa: 
      return False 
    return pod[alfa].ins1 == ins_crt or pod[alfa].ins2 == ins_crt 

print ("Lansare executie program: \n") 
Plimbare(ins_start,0) 

但我的事實,我的數組是超出範圍,我不知道我能做些什麼來解決這個鏈接的一些錯誤。你可以幫我嗎?對不起,如果我的問題不那麼相關,但正如我所說,我是新..

+0

第一次你的'POSIBIL()'函數稱爲'x'爲空列表,並且您仍然希望訪問該列表中的第n個元素 – kuro

+0

而不是x [k] = i,請使用x.append(i) –

+0

非常感謝。我認爲我的問題現在已經解決了。 :) –

回答

0

解決的評論:

First time your POSIBIL() function called, x is empty list and you still want to access upto nth element in that list 

instead of x[k] = i, use x.append(i) – Jay Parikh