def hourglassSum(arr):
totSum = 0
sum = 0
for j in range(4):
for i in range(4):
sum = arr[j][i] + arr[j][i+1] +arr[j][i+2]
print(sum)
if (sum > totSum):
totSum = sum
return totSum
我的程序的目的是从数组中找到一些元素并将它们添加在一起。如果一个和大于另一个和,则返回最大和。该代码适用于正数。但是不适用于负数。有人可以帮我解释原因吗?
答案 0 :(得分:0)
它不起作用,因为负数之和小于0
。同时,totSum
开始是0
,这就是sum > totSum
最终永远不会成为True
的原因。
这是修复它的一种方法:
import math
def hourglassSum(arr):
totSum = -math.inf
for j in range(4):
for i in range(4):
sum = arr[j][i] + arr[j][i+1] +arr[j][i+2]
if (sum > totSum):
totSum = sum
return totSum
当然,这种事情总会有一线希望:
def hourglassSum(arr):
return max(arr, key=sum)