天天看點

傳回一個二維整數數組中最大聯通子數組的和

題目:傳回一個二維整數數組中最大聯通子數組的和

要求:

         輸入一個二維整形數組,數組裡有正數也有負數。

         求所有子數組的和的最大值    

代碼:

#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++)  

{      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++)                     

  }                    

}                          

if(temp>=sum)                      

sum=temp;       

}             

temp=0;             

l++;      

}         

k++;            

l=j ;                  

if(k%n==i)      

break;     

}        

}    

cout<<sum<<endl;   }

截圖:

傳回一個二維整數數組中最大聯通子數組的和