项目Euler#11:Python解决方案无法正常工作

时间:2012-01-26 04:37:29

标签: 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 个答案:

答案 0 :(得分:22)

您是否忘记了两个对角线方向?