关于如何解决此类问题的任何想法(在C ++中) - 比如哪个是最好的算法。
答案 0 :(得分:3)
假设您有一个n x n矩形区域黑白(O和1)像素,并且您正在寻找此区域中最大的白色矩形。
我会写一些简单的东西,如下所示:
这只是可能解决方案的初稿。它应该使用更正式的算法语法重写,并且应该提供许多细节。如果你想要有效率,每一步都要隐藏陷阱以避免陷阱。但编码不应该太难。
如果我没有遗漏某些内容,我在上面描述的内容在最坏的情况下应该基本上是O(n4),第一遍O(n2)用于查找水平线段(在非常小的环路下可能非常快)在实践中第二遍可能比O(n4)少得多(取决于段大小,实际上是nb_total_segment x nb_segment_per_line x nb_overlapping_segment)。
对我来说这看起来并不坏。用更好的O复杂性看不出任何明显的方法(但当然可能有某种方式,O(n4)并不那么好)。
如果您提供有关输入结构和预期结果的一些详细信息,那么编码可能会很有趣。
答案 1 :(得分:2)