可能重复:find largest submatrix algorithm
我需要帮助解决问题。
在MxN
行的每一行中,M
板以N
个字母(az)表示,我必须找到最大的区域,其中只有两种类型的字母它。该区域必须具有矩形形状。这是一个例子:
4x4:
AAAA
ABBC
BBCA
DCAA
输出为6,因为只有两种字母的最大矩形区域位于AAA-ABB的上角,只有A和B(2种类型)。
答案 0 :(得分:1)
一些想法:
我认为你必须进行详尽的搜索。但是,一旦找到符合条件的区域A矩形,就不需要查看任何小于A的区域的矩形。
任何包含至少3个不同字母的大小为2x2或1x3的矩形都不能成为解决方案的一部分。也许您可以先“标记”这些区域,然后再通过输入进行第二次扫描,只考虑不包括那些标记区域的矩形。
找到符合条件的1x1矩形(即每个单元格)。查看此矩形是否可以在一个方向或另一个方向上展开,并且仍然符合条件。继续,直到它无法向任何方向扩展并仍然符合标准。可能存在矩形可以在任一方向上展开的情况:您需要回溯以检查这些情况(在您的示例中,左上角的2x2可以在任一方向上展开)。这听起来像是一个搜索问题 - 阅读一些搜索技术。
答案 1 :(得分:0)
不是一个完整的工作解决方案,但可能是解决此问题的方向:
尝试根据连接区域表示电路板,每个区域代表一个或多个包含相同字母的连接位置。然后尝试组合区域。