我正在尝试Project Euler Problem 10.
问题要求您将水平,垂直或对角连接的所有相邻数字相乘。这是问题的link。
基本上,您将如何创建二维数组并定义它?
是否需要二维数组?
我能以更好的方式做到吗?
答案 0 :(得分:1)
Python没有C语言中的数组,除非您安装Numpy库(如果您尝试处理数学和数字处理问题,我建议使用它)。 Numpy没有必要解决这个问题。 如果你想要一个2D数组,你可以使用嵌套列表:每一行都是一个列表,如下所示:
board = [[10, 12, 5, 7, ...], [24, 3, 7, 8, ...] ... ]
然后您可以将数字索引为board[0][3]
,这将是7
(第一行,第四个元素)。您可以在Python教程中找到更多相关信息。
对于那个特殊问题,您甚至可能不需要二维数组。您知道电路板的尺寸,因此您可以使用线性阵列(例如,在400个元素阵列中展平的所有行)。然后只需添加即可向任何方向索引;添加+ 1 / -1将获得相邻元素(同一行),添加+ 20 / -20将获得下一个/上一个行元素;添加21将对角移动等
你需要注意边界:在问题公式中没有明确规定的一件事是在边界发生的事情,即你包裹还是简单地停止?可能是后者。