任何方向上四个相邻数字的最大乘积是多少? (上,下,左,右或对角)在20×20网格中?
http://projecteuler.net/problem=11
我已经从数字创建了二维元组LIST。
LIST =((8,2,22,....),(49,49,99,....)......)
这是我的解决方案。我无法弄清楚逻辑上的缺陷。
(编辑):我的回答是51267216,但不正确。
# For every number check diagnolly, down and right if the product exceeds max_product.
# Ignore the exception(OutOfBounds) if encountered.
max_product = 0
for i in range(20):
for j in range(20):
temp = 1
try:
for k in range(4):
temp = temp * LIST[i][j+k]
if (temp > max_product):
max_product = temp
except:
pass
temp = 1
try:
for k in range(4):
temp = temp * LIST[i+k][j]
if (temp > max_product):
max_product = temp
except:
pass
temp = 1
try:
for k in range(4):
temp = temp * LIST[i+k][j+k]
if (temp > max_product):
max_product = temp
except:
pass
print max_product
答案 0 :(得分:22)
您是否忘记了两个对角线方向?