我已经用python在CODECHEF上为问题Domino Solitaire编写了一个程序。如果我的列数大于2920,则此运行时错误显示-
进程结束,退出代码为-1073741571(0xC00000FD)
但是我的程序在较少的列数下运行良好。
这是我的代码-
import sys
sys.setrecursionlimit(10000)
def vs(i):
return abs(row1[i] - row2[i])
def hs(i):
return abs(row1[i] - row1[i+1]) + abs(row2[i] - row2[i+1])
n = int(input())
row1 = list(map(int, input().split()))
row2 = list(map(int, input().split()))
memoiz = [[-1, -1] for x in range(n)]
def tileit(i=0):
if i == (n-2):
memoiz[i][0] = vs(i) + vs(i+1)
memoiz[i][1] = hs(i)
return max(memoiz[i][0], memoiz[i][1])
elif i == (n-1):
memoiz[i][0] = vs(i)
return memoiz[i][0]
if memoiz[i][0] != -1:
max_vs = memoiz[i][0]
else:
max_vs = vs(i) + tileit(i+1)
memoiz[i][0] = max_vs
if memoiz[i][1] != -1:
max_hs = memoiz[i][1]
else:
max_hs = hs(i) + tileit(i+2)
memoiz[i][1] = max_hs
return max(max_vs, max_hs)
print(tileit())
memoiz
列表存储第i
个图块(从0开始)可能的最大垂直得分和水平得分
vs(i)
计算第i
个图块的垂直图块得分
hs(i)
计算第i
个图块的水平图块得分
如果我在print(i)
函数的第一行中添加tileit()
,它将打印到2919
,然后停一会并显示此错误。