Algorithm 最大和/面积子矩阵
输入:正数/负数和k的nxn矩阵 输出:子矩阵,其元素的最大和除以至少有k个元素的元素数 对于这个问题,有比O(n^4)更好的算法吗?有一种O(n^3)二维kadane算法,用于在nxn矩阵中找到最大和子矩阵(即子矩形)。(你可以在SO上找到关于它的帖子,或者在线阅读)。一旦您了解了算法的工作原理,很明显,如果您能够解决在O(n)时间内的n个数字的一维数组中找到长度至少为m的最大平均子区间的问题,那么您就可以得到问题的O(n^3)时间解。这确实是可能的,请参阅文件cs.slu.edu/~goldwasser/publications/DensityPreprint.pdf 因此,对于您的问题,有一个O(n^3)时间解决方案 有一种O(n^3)2-d kadane算法,用于在nxn矩阵中寻找最大和子矩阵(即子矩形)。(你可以在SO上找到关于它的帖子,或者在线阅读)。一旦您了解了算法的工作原理,很明显,如果您能够解决在O(n)时间内的n个数字的一维数组中找到长度至少为m的最大平均子区间的问题,那么您就可以得到问题的O(n^3)时间解。这确实是可能的,请参阅文件cs.slu.edu/~goldwasser/publications/DensityPreprint.pdfAlgorithm 最大和/面积子矩阵,algorithm,matrix,Algorithm,Matrix,输入:正数/负数和k的nxn矩阵 输出:子矩阵,其元素的最大和除以至少有k个元素的元素数 对于这个问题,有比O(n^4)更好的算法吗?有一种O(n^3)二维kadane算法,用于在nxn矩阵中找到最大和子矩阵(即子矩形)。(你可以在SO上找到关于它的帖子,或者在线阅读)。一旦您了解了算法的工作原理,很明显,如果您能够解决在O(n)时间内的n个数字的一维数组中找到长度至少为m的最大平均子区间的问题,那么您就可以得到问题的O(n^3)时间解。这确实是可能的,请参阅文件cs.slu.edu/~gold
因此,对于您的问题,有一个O(n^3)时间解决方案 解决此问题的基于FFT的分治方法:
它的效率不如Kadane的(O(N^3)vs.O(N^3 log N)),但在解决方案构造方面却有不同的见解。基于FFT的分治方法解决此问题:
它的效率不如Kadane的(O(N^3)vs.O(N^3 log N)),但在解决方案构造方面却有不同的见解。readthis@Mateusz这是关于最大和的问题。这个问题有一个简单的答案:只要找到矩阵的最大元素。包含此元素的1x1子矩阵是最大和/面积子矩阵。@EvgenyKluev您说得对。如果我们查找包含k个以上元素的矩阵会怎么样。对于包含k个以上元素的矩阵,您可以尝试所有列的子集,并解决此问题的一维版本,如中所述。阅读this@Mateusz这是关于最大和的问题。这个问题有一个简单的答案:只要找到矩阵的最大元素。包含此元素的1x1子矩阵是最大和/面积子矩阵。@EvgenyKluev您说得对。如果我们寻找k个元素以上的矩阵会怎么样。对于k个元素以上的矩阵,您可以尝试所有列的子集,并解决该问题的一维版本,如中所述。这非常令人印象深刻。这非常令人印象深刻。