簡體   English   中英

python運行時錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM