2012年4月23日

【100题】三十五 求一个矩阵中最大的二维矩阵(元素和最大)

摘要: 一,题目:求一个矩阵中最大的二维矩阵(元素和最大).如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3要求:(1)写出算法;(2)分析时间复杂度;(3)用C写出关键代码二,分析:假设最大子矩阵的结果为从第r行到k行、从第i列到j列的子矩阵,如下所示(ari表示a[r][i],假设数组下标从1开始): | a11 …… a1i ……a1j ……a1n | | a21 …… a2i ……a2j ……a2n | ..... | ar1 …… ari ……arj ……arn |第r行 . . . .......... | V | ak1 …… aki ……akj ……a 阅读全文

posted @ 2012-04-23 18:44 小田的专栏 阅读(3691) 评论(0) 推荐(1) 编辑

【算法设计】最大子矩阵问题

摘要: 一,最大子矩阵问题: 给定一个n*n(0<n<=100)的矩阵,请找到此矩阵的一个子矩阵,并且此子矩阵的各个元素的和最大,输出这个最大的值。Example:0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2其中左上角的子矩阵:9 2-4 1-1 8此子矩阵的值为9+2+(-4)+1+(-1)+8=15。二,分析 子矩阵是在矩阵选取部份行、列所组成的新矩阵。例如它亦可用A(3;2)表示,显示除掉第3行和第2列的余下的矩阵。这两种方法比较常用,但还是没有标准的方法表示子矩阵。以上为维基百科上给出的定义,感觉跟此题的定义不是一回事呢? 我们首先想到的方法就是穷举一个. 阅读全文

posted @ 2012-04-23 17:13 小田的专栏 阅读(9246) 评论(0) 推荐(1) 编辑

【算法设计】最大子段和问题解析(对应算法第三题)

摘要: 一,题目:最大子段和: 给定一个长度为n的一维数组a,请找出此数组的一个子数组,使得此子数组的和sum=a[i]+a[i+1]+……+a[j]最大,其中i>=0,i<n,j>=i,j<n 例如:31 -41 59 26 -53 58 97 -93 -23 84 子矩阵59+26-53+58+97=187为所求的最大子数组。二,源码第一种:直接穷举法:#include <iostream> using namespace std; int main() { int a[10]={31, -41, 59, 26, -53, 58, 97, -93, -23, 8 阅读全文

posted @ 2012-04-23 15:13 小田的专栏 阅读(536) 评论(0) 推荐(0) 编辑

导航