Project Euler 第11题:Python 解法无效

2 投票
1 回答
2413 浏览
提问于 2025-04-17 11:07

在一个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

你是不是忘了其实有两个对角方向呢?

撰写回答