返回一个二维整数数组中最大联通子数组的和

题目:返回一个二维整数数组中最大联通子数组的和

要求:

         输入一个二维整形数组,数组里有正数也有负数。

         求所有子数组的和的最大值    

代码:

#include<iostream>

#include<stdlib.h>

#include<iomanip>

using namespace std;

#define Max 100

void main () {  

int n=5,m=5;  

int array[5][5];  

{

for(int j=0;j<m;j++)   

{    

array[i][j]=-Max+rand()%(Max*2+1);   

cout<<setw(5)<<array[i][j];   

}   cout<<endl;  

}  

int sum=array[0][0],temp=0;    

for(int i=0;i<n;i++)  

for(int j=0;j<m;j++)   

{      int k=i,l=j;          

while(1!=0)             

  {          

while(l<m)             

{                                   

if(k>=n)                    

{                          

for(int a=i;a<k;a++)                     

{                           

for(int b=j;b<=l;b++)                           

{                             

temp=temp+array[a][b];         

 }                 

 }                            

for(int a=0;a<=(k%n);a++)                    

{                     

for(int b=i;b<=l;b++)                        

{                           

temp=temp+array[a][b];        

  }         

}        

}        

else        

{        

for(int a=i;a<=k;a++)                     

{                           

for(int b=j;b<=l;b++)                           

{                             

temp=temp+array[a][b];        

  }                    

}        

}                          

if(temp>=sum)                      

{                          

sum=temp;       

}             

temp=0;             

l++;      

}         

k++;            

l=j ;                  

if(k%n==i)      

break;     

}        

}    

}    

cout<<sum<<endl;   }

 

截图:

posted @ 2015-05-29 08:42  嘴角上扬的马先生  阅读(132)  评论(0编辑  收藏  举报