Project Euler 第11题:Python 解法无效
在一个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
1 个回答
27
你是不是忘了其实有两个对角方向呢?