1
我是python新手。我正在研究分步问题。我有替代解决方案,但想知道我出错的地方。python运行时错误
问题:您是在无限二维网格,其中可以在任意的 的8个方向移动:
(X,Y)到(x + 1,Y),(X - 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
这将是更好的,而不提供一个外部链接 – JuniorCompressor
创建问题的自给自足描述'IND = X.index(一)'返回了''的的_first_ occurence的索引。在枚举(zip(X,Y))中使用'for ind,(a,b):'代替。 –
谢谢拉夫。它有帮助。 – codewarrior