二维数组求最大矩阵

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

#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;

思路:

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

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

合伙人:郎国杰
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。