二维数组求最大矩阵

在上次一维数组求最大子数组的和之后我又做了这次的二维数组最大矩阵之和,代码如下

#include<iostream.h>
static int max;

void qiongju(int juzhen[][4],int ai,int aj,int m,int n)
{
int linshi;
for(int i=ai;i<m;i++)
{
for(int j=aj;j<n;j++)
{
linshi=0;
for(int i1=ai;i1<=i;i1++)
{
for(int j1=aj;j1<=j;j1++)
{
linshi=linshi+juzhen[i1][j1];
}
}
// cout《linshi《endl;
if(linshi>max)
   {
   max=linshi;
   }
}
}
}
void main()
{
int juzhen[3][4]={{1,4,-6,5},{-6,7,-9,2},{6,4,2,-4}};
for(int si=0;si<3;si++) //输出矩阵
  {
   for(int sj=0;sj<4;sj++)
   {
   cout《juzhen[si][sj]《" ";
   }
   cout《endl;
  }
  max=juzhen[0][0];
  for(int i=0;i<3;i++) //对每一个值作为子矩阵第一个值分别求和
  {
   for(int j=0;j<4;j++)
   {
   qiongju(juzhen,i,j,3,4);
   }
  }
  cout《"最大子矩阵和为:"《max《endl;

思路:

这段程序我实在网上找到的,利用的穷举法,也可以是压榨法,就是把这个矩阵压缩成一个长方形,宽为一,然后在向其他列扩展,之和加起来在比较。

此次是团队开发,我负责编辑程序。

合伙人:郎国杰
}

posted on 2015-04-09 21:01  怎么这么多名字  阅读(368)  评论(0编辑  收藏  举报