python中的运行时错误:列表

时间:2013-12-06 16:31:04

标签: python arrays python-2.7 dynamic-programming

为什么以下代码会给出运行时错误 请提出原因,不能将数组编入索引,如c ++

t=input()
dp1=[]
dp3=[]
dp5=[]
dp7=[]
dp1[0]=0
dp3[0]=0
dp5[0]=0
dp7[0]=0
dp1[1]=1
dp3[1]=1
dp5[1]=1
dp7[1]=1
i=2
while i<=10000:
    dp1[i]=dp3[i-1]
    dp5[i]=dp7[i-1]
    dp3[i]=dp1[i-1]+dp5[i-1]
    dp7[i]=dp5[i-1]+dp3[i-1]
    i+=1
while t>0:
    n=int(raw_input())
    print dp1[n]+dp3[n]+dp5[n]+dp7[n]
    t-=1

错误消息:运行时错误时间:0.01内存:7852信号:-1

3 个答案:

答案 0 :(得分:3)

不,Python列表不会自动实现索引。

如果您需要动态编程刮板,请设置完整列表:

dp1 = [0] * 1000
dp3 = [0] * 1000
dp5 = [0] * 1000
dp7 = [0] * 1000

或使用.append()

dp1 = [0, 1]
dp3 = [0, 1]
dp5 = [0, 1]
dp7 = [0, 1]

for i in xrange(2, 10001):
    dp1.append(dp3[i - 1])
    dp5.append(dp7[i - 1])
    dp3.append(dp1[i - 1] + dp5[i - 1])
    dp7.append(dp5[i - 1] + dp3[i - 1])

t = input()
for _ in xrange(int(t)):
    n = int(raw_input())
    print dp1[n] + dp3[n] + dp5[n] + dp7[n]

我在for而不是xrange()循环上使用了while循环,范围为it

答案 1 :(得分:0)

dp1[i]=dp3[i-1]

尝试为i&gt; 2读取dp3中不存在的元素。可能是2到10000的循环。

答案 2 :(得分:0)

不确定这是否是你想要的。

#! /usr/bin/python2.7

t=input()

dp1={0: 0, 1: 1}
dp3={0: 0, 1: 1}
dp5={0: 0, 1: 1}
dp7={0: 0, 1: 1}
for i in range (2, 10001):
    dp1[i]=dp3[i-1]
    dp5[i]=dp7[i-1]
    dp3[i]=dp1[i-1]+dp5[i-1]
    dp7[i]=dp5[i-1]+dp3[i-1]

while t>0:
    n=input()
    print dp1[n]+dp3[n]+dp5[n]+dp7[n]
    t-=1