查找唯一的矩形连续子矩阵的最大大小(即在给定子矩阵内不重复)元素。
我该如何解决这个问题?
答案 0 :(得分:0)
您应该将最大值设置为0.迭代矩阵的行,如果它们不重复(无论这意味着什么),请将其大小与最大值进行比较。如果它更大,则存储新的最大值并将其用于进一步的迭代。如果您找到了新的最大值,请存储您需要存储的任何内容。所以,算法看起来像这样:
maximum <- 0
for all rows as row
if (row is not repeating) then
if (row rectangle size > maximum) then
maximum <- new maximum
store whatever you need to store
end if
end if
end for
请注意,如果您没有进一步的信息,那么进行二分查找是没有意义的,因为您必须检查每个矩形的大小。如果您对矩形有了进一步的了解,那么算法可能会得到优化。
答案 1 :(得分:0)
第一个想法(递归):也许识别整个数组中的对,这将识别要尊重的约束。如果在x0,y0和x1,y1两个位置都有一个值 v ,那么你就不能有一个包含这些位置的矩形,所以这可以让你从这些值构造一些可能的矩形并递归它们?
另一个(动态编程):从基本数组(大小为1x1)开始,并尝试根据约束合并它们?