我有一些不同值的2D数组,例如:
array = [[1, 1, 2, 5, 6, 1],
[5, 1, 1, 1, 6, 7],
[10, 12, 1, 1, 11, 11],
[8, 10, 1, 1, 1, 9],
6, 5, 10, 1, 15]]
并且,我想找到相同值的最大矩形数组的坐标(左上角和右下角)并打印出来。
在这个数组中是坐标:
x=1, y=2
x=3, y=3
有什么想法吗?
答案 0 :(得分:0)
您可以使用此算法:
这是脚本。请注意,我在数组的最后一行的末尾添加了1,以便所有条目具有相同的长度。变量[WinError 10061] No connection could be made because the target machine actively refused it
和x
分别引用第一个和第二个数组索引,它们分别对应于行和列(不是列和行!)。
y
通过运行array =[[ 1, 1, 2, 5, 6, 1],
[ 5, 1, 1, 1, 6, 7],
[10, 12, 1, 1, 11, 11],
[ 8, 10, 1, 1, 1, 9],
[ 6, 5, 10, 1, 15, 1]]
xMax = len(array)
yMax = len(array[1])
maxSize = 0
for xUL in range(xMax):
for yUL in range(yMax):
valueRef = array[xUL][yUL]
yBRMax = yMax
for x in range(xUL, xMax):
if (array[x][yUL] != valueRef):
break
for y in range(yUL, yBRMax):
size = (y-yUL+1)*(x-xUL+1)
if (array[x][y] != valueRef):
yBRMax = y
break
else:
size = (y-yUL+1)*(x-xUL+1)
if (size > maxSize):
print("New max size: xUL: %d yUL: %d x: %d y %d size: %d" %(xUL, yUL, x, y, size))
maxSize = size
xMaxUL = xUL
yMaxUL = yUL
xMaxBR = x
yMaxBR = y
:
python3 max.py