求一个矩阵最大子矩阵的算法模板
2013-07-17 19:04
288 查看
做题时遇到一题需要求一个矩阵的最大子矩阵元素和,在此贴出模板,方便以后用。
代码如下:
if(n==1)
{
for(i=0;i<m;i++)
{
sum=0;
for(j=i;j<m;j++)
{
sum+=vn[0][j];
if(sum>max)
max=sum;
}
}
cout<<max<<endl;
}
else
{
for(int a=0;a<n;a++)
{
for(int b=0;b<n;b++)
{
sum=0;
for(int c=b;c<m;c++)
{
sum+=vn[a][c];
lsum=sum+temp[b][c];
if(lsum>max)
max=lsum;
if(lsum<0)
lsum=0;
temp[b][c]=lsum;
}
}
}
cout<<max<<endl;
}
其中n,m为矩阵的行和列。
代码如下:
if(n==1)
{
for(i=0;i<m;i++)
{
sum=0;
for(j=i;j<m;j++)
{
sum+=vn[0][j];
if(sum>max)
max=sum;
}
}
cout<<max<<endl;
}
else
{
for(int a=0;a<n;a++)
{
for(int b=0;b<n;b++)
{
sum=0;
for(int c=b;c<m;c++)
{
sum+=vn[a][c];
lsum=sum+temp[b][c];
if(lsum>max)
max=lsum;
if(lsum<0)
lsum=0;
temp[b][c]=lsum;
}
}
}
cout<<max<<endl;
}
其中n,m为矩阵的行和列。
相关文章推荐
- uva1330 在一个大的矩阵中寻找面积最大的子矩阵
- 微软算法100题35 求一个矩阵中最大的二维矩阵
- 算法习题45:对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一;;;一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 每日一道算法题:求一个矩阵中最大的二维矩阵(元素和最大)
- 给定一个正整数和负整数组成的N*N矩阵,编写代码找出元素总和最大的子矩阵。
- 程序员面试金典——解题总结: 9.18高难度题 18.12给定一个正整数和负整数组成的N*M矩阵,编写代码找出元素总和最大的子矩阵。
- 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。
- 求一个二维数组的最大子矩阵的和(令矩阵的行首尾相接为环)
- 微软算法100道题------求一个矩阵中最大的二维矩阵(元素和最大)
- 【左神算法课】二维矩阵的子矩阵最大累加和
- Task 4.2 求一个矩阵的最大子矩阵的和
- 给定一个矩阵,求和最大的子矩阵
- 每天学习一算法系列(32)(求一个矩阵中最大的二维矩阵(元素和最大))
- JAVA代码—算法基础:最大子矩阵的和(N*N的矩阵)
- 求一个矩阵的最大子矩阵
- 算法习题35:求一个矩阵中最大的二维矩阵
- 华为机考 给你一个N*M的矩阵,每个位置的值是0或1,求一个面积最大的子矩阵,这个矩阵必须是一个正方形,且里面只能由1构成,输出最大的正方形边长。其中n,m<=400;
- Maximal Rectangle (求矩阵的最大的子矩阵) 【面试算法leetcode】
- 每日一个小算法(一) 数组中连续个数组成的和最大
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。