为什么以下代码会给出运行时错误 请提出原因,不能将数组编入索引,如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
答案 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
循环,范围为i
和t
。
答案 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