[英]Runtime error with python
我是python的新手。 我正在研究最小步問題。 我有替代解決方案,但想知道我哪里出錯了。
問題:您處於無限的2D網格中,您可以在8個方向中的任何一個方向移動:
(x,y)到(x + 1,y),(x - 1,y),(x,y + 1),(x,y-1),(x-1,y-1),(x + 1,y + 1),(x-1,y + 1),(x + 1,y-1)。 您將獲得一系列點數以及您需要覆蓋點數的順序。 給出可以實現它的最小步驟數。 你從第一點開始。
輸入:[(0,0),(1,1),(1,2)]輸出:2
我嘗試了以下方法,其中X代表x坐標,Y代表Y坐標。 我發現以下輸入失敗了。 預期輸出為108,我得到118. y坐標的差異為19,5,7,10,25,4,11,2
X:[4,8,-7,-5,-13,9,-7,8] Y:[4,-15,-10,-3,-13,12,8,-8]
我觀察到它在最后兩次迭代中失敗了。 我嘗試打印y坐標差異,發現11和2即將到來,不明白他們為什么會來。 非常需要任何幫助。 提前致謝。
def coverPoints(self, X, Y):
count=0
if(len(X)<=1):
return 0
for (a,b) in zip(X,Y):
ind = X.index(a)
if(len(X)==ind+1):
break
m=X[ind+1]-a
n=Y[ind+1]-b
if(m<0):
m=-m
if(n<0):
n=-n
if(m<=n):
print(n)
count=count+n
else:
print(n)
count=count+m
return count
羅寧的回答有所幫助。 這是修改后的解決方案。
def coverPoints(self, X, Y):
count=0
if(len(X)<=1):
return 0
for ind,(a,b) in enumerate(zip(X,Y)):
if(len(X)==ind+1):
break
m=X[ind+1]-a
n=Y[ind+1]-b
if(m<0):
m=-m
if(n<0):
n=-n
if(m<=n):
count=count+n
else:
count=count+m
return count
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.