最优子矩阵是建立在数列连续最大和的基础上的。所谓最优子矩阵,就是指在一个n*m二维的矩阵中,确定一个小的矩阵,使这个小矩阵中所有元素的和最大。
思考一下最优子矩阵和连续最大和的异同:
1、 所求的和都具有连续性;
2、 连续最大和是一维问题,最优子矩阵是二维问题
另外,对于一个矩阵而言,如果我们将连续k行的元素纵向相加,并对相加后所得的数列求连续最大和,则此连续最大和就是一个行数为k的...
分类:
其他好文 时间:
2015-05-27 10:20:01
阅读次数:
91
题目链接:http://poj.org/problem?id=1050思路分析:该题目为经典的最大子矩阵和问题,属于线性dp问题;最大子矩阵为最大连续子段和的推广情况,最大连续子段和为一维问题,而最大子矩阵为二维问题,可以考虑将二维问题转换为一维问题,即变为最大子段和问题即可求解;先考虑暴力解法,暴...
分类:
其他好文 时间:
2015-05-23 12:49:30
阅读次数:
122
Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and return its area.解题思路:求01矩阵中,全是1的子矩阵的最大面积。把矩阵按照每一行...
分类:
编程语言 时间:
2015-05-19 20:39:59
阅读次数:
280
二维树状数组:add: (x,y)位置的元素值加d;sum:查询(1,1)~(x,y)子矩阵元素和;注意树状数组的元素,下标都要从1开始。void add(int x, int y, int d) { int i, j; for(i = x; i 0; i -= lowbit(i)) ...
分类:
编程语言 时间:
2015-05-18 16:12:42
阅读次数:
139
最大和时间限制:1000ms | 内存限制:65535KB难度:5描述给定一个由整数组成二维矩阵(r*c),现在需要找出它的一个子矩阵,使得这个子矩阵内的所有元素之和最大,并把这个子矩阵称为最大子矩阵。例子:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2其最大子矩阵为:9 2...
分类:
其他好文 时间:
2015-05-14 18:16:29
阅读次数:
202
题意:给出一个数字矩阵,找出一个子矩阵,使得其中的数字之和最大。
解题思路:这道题是对最大连续子串和的一种扩展。解决办法就是在二维矩阵转化为多个一维数组来求最大值。具体来说就是先固定所求子矩阵的左右边界i和j,然后求出每行从左边界到右边界的数之和,这样每行的和就可以作为一维数组的一个元素来求最大连续子串的和,这个和就是左右边界为i和j的最大矩形,枚举所有左右边界的情况,最后找出和的最大值即为最终...
分类:
其他好文 时间:
2015-05-13 10:44:35
阅读次数:
135
给定n*n的矩阵,需要查询任意子矩阵中所有数字的最大公约数。请给出一种设计思路,对矩阵进行预处理,加速查询。额外的空间复杂度要求O(n^2)以内。...
分类:
编程语言 时间:
2015-05-12 15:48:12
阅读次数:
176
题目描述:在一个M * N的矩阵中,所有的元素只有0和1,从这个矩阵中找出一个面积最大的全1子矩阵,所谓最大是指元素1的个数最多。输入:输入可能包含多个测试样例。对于每个测试案例,输入的第一行是两个整数m、n(1 2 using namespace std; 3 4 int main() 5 { ....
分类:
其他好文 时间:
2015-05-10 23:48:01
阅读次数:
271
题目传送门 1 /* 2 最大子矩阵和:把二维降到一维,即把列压缩;然后看是否满足最大连续子序列; 3 好像之前做过,没印象了,看来做过的题目要经常看看:) 4 */ 5 #include 6 #include 7 #include 8 #include 9 using na...
分类:
其他好文 时间:
2015-05-06 20:57:56
阅读次数:
128