【发布时间】:2018-08-06 06:52:52
【问题描述】:
你有一个类似下面的列表
list = [
[1,7,1,5,6],
[1,8,9,1,5],
[1,1,10,1,5],
[2,1,1,1,1],
[1,1,1,1,1]
]
从列表的中间开始,你将如何分析周围的数字并将你的位置更改为具有最大值的位置。所以在这种情况下,
arr[2][2] (10) -> arr[1][2] (9) -> arr[1][1] (8) -> arr[0][1] (7)
意思是从数组中间开始你如何只选择值
[8,9,1]
[1,10,1]
[1,1,1]
然后对具有最大价值的位置执行相同的操作 [9]。
到目前为止我所拥有的:
midLow=0
midHigh=0
rowLow=0
rowHigh = 0
# -- Columns --
evenOddCol = (len(arr)%2) # Find if there are even/off number of items in the list
mid = (len(arr)/2) # Define Middle row
if evenOddCol == 1: # If number of rows is odd, make no changes
mid = mid
else: # If number of rows is even, define the upper/lower list
midLow = mid-1
midHigh = mid
# -- Rows --
rowLen = (len(arr[1])) # Length of an arbitary row
evenOddRow = ((rowLen)%2) # Does row have an even/off number of elements
rowMid = (rowLen/2) # Define the middle of the row
if evenOddRow == 1: # If the number of rows is odd, make no changes
rowMid = rowMid
else: # If the number of rows is even, define the upper/lower rows
rowLow = rowMid-1
rowHigh = rowMid
# -- Logic --
return arr[mid][rowMid]
返回 10,二维列表数组的中间值。
返回中间值后,您必须确定最高的周围值。不知道该怎么做。
【问题讨论】:
-
目标是什么?你求的这个递归函数,它是如何终止递归的?
-
@pstatix 该函数将在到达数组边缘时终止。表示第一行/最后一行或列中的任何变量。类似于寻找最大价值的迷宫,直到你到达终点。
-
而且它必须总是在数组的中心初始化?
-
当然你需要处理我们最大值是所有选项的情况(即质心周围的所有值都相同)
-
@pstatix 是的,这是正确的。然而,现在我主要只是在寻找一种有效的方法来分析周围的值。它必须始终初始化到数组的中心,是的。
标签: arrays python-3.x parsing math