找到没有重复元素的最大矩形

时间:2015-07-11 06:48:07

标签: c algorithm

查找唯一的矩形连续子矩阵的最大大小(即在给定子矩阵内不重复)元素。

我该如何解决这个问题?

2 个答案:

答案 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)开始,并尝试根据约束合并它们?