C++ 大矩阵中的最大等子矩阵 假设你有一个矩阵的高度H和宽度W(h,w<p>),你可以枚举所有向量(-H<dh<h,0<p>),有一个算法优于O(W2H2)。让我们先考虑一个更容易的版本。给定一个矩阵 m < /代码>只有小写字母,求出矩阵中的最大子字符串。这个问题等于找到了< M [0 ] $ 1M〔1〕。…M[w-1],其中我们在M[i]和M[i+1]之间添加了不同的特殊字符。使用a,最长的公共子串问题可以在线性时间内求解,在这种情况下,它可以在O(wh)内求解

C++ 大矩阵中的最大等子矩阵 假设你有一个矩阵的高度H和宽度W(h,w<p>),你可以枚举所有向量(-H<dh<h,0<p>),有一个算法优于O(W2H2)。让我们先考虑一个更容易的版本。给定一个矩阵 m < /代码>只有小写字母,求出矩阵中的最大子字符串。这个问题等于找到了< M [0 ] $ 1M〔1〕。…M[w-1],其中我们在M[i]和M[i+1]之间添加了不同的特殊字符。使用a,最长的公共子串问题可以在线性时间内求解,在这种情况下,它可以在O(wh)内求解,c++,algorithm,matrix,C++,Algorithm,Matrix,对于最大的子矩阵问题,可以通过列举所有可能的高度将其简化为子矩阵问题。lequal表示子矩阵中的每个元素都是相同的?矩阵中元素的类型如何?这些是数字还是可以是字符/字符串?子矩阵应该是最大的吗?如果不是,这将很容易,您可以检查是否有两个元素具有相同的项。@不错,它在标题中,但不在问题文本中。子矩阵是否需要不重叠?h,w@JuanLopes:我不知道,据我估计,它可能会在一分钟内运行。在比赛中,这肯定会太慢,但可能不是那种问题,我看不到太多“高度h和宽度w”之类的语句(h,w@Juan我也是。我很

对于最大的子矩阵问题,可以通过列举所有可能的高度将其简化为子矩阵问题。lequal表示子矩阵中的每个元素都是相同的?矩阵中元素的类型如何?这些是数字还是可以是字符/字符串?子矩阵应该是最大的吗?如果不是,这将很容易,您可以检查是否有两个元素具有相同的项。@不错,它在标题中,但不在问题文本中。子矩阵是否需要不重叠?h,w@JuanLopes:我不知道,据我估计,它可能会在一分钟内运行。在比赛中,这肯定会太慢,但可能不是那种问题,我看不到太多“高度h和宽度w”之类的语句(h,w@Juan我也是。我很想知道是否有一个次二次算法来解决这个问题。关于散列子矩阵的想法似乎适合我的问题,但我不知道如何散列。对不起,我的英语很差,你能理解第一部分吗?是的,我开始明白你说的第二段是什么意思,但有点难理解。我现在明白了。这个主意很酷,但单从你的答案就很难理解了:/是的,所以在第一次迭代中,我们使用后缀数组对矩阵的行后缀进行排序。然后在第二步中,我们对相邻两行组合的后缀进行排序,可能使用基数排序对第一次迭代的排序。在第三次迭代中TEP,我们对相邻三行的后缀排序等等。这是正确的吗?当然,感觉自由。+ 1为你,这绝对是一个更好的解决方案,OP应该考虑接受这个。