#include<iostream.h> int sum(int m,int n,int a[3][3],int clo,int line,int max) { int sum=0,i=0; for(i=m;i<clo;i++) //先以行为主序,找遍所有的子数组 { for(int j=n;j<line;j++) {sum=0; for(int k=m;k<=i;k++) { for(int l=n;l<=j;l++) { sum=sum+a[k][l]; } } if(sum>max) max=sum; } } for(i=n;i<line;i++) //再以列为主序,求所有的子数组的和 { for(int j=m;j<clo;j++) {sum=0; for(int k=n;k<=i;k++) { for(int l=m;l<=j;l++) { sum=sum+a[l][k]; } } if(sum>max) max=sum; } } return max; } int main() { int a[3][3]={-5,3,5,0,-5,-2,6,7,-4}; int max=a[0][0]; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) max=sum(i,j,a,3,3,max); } cout<<"此数组最大的子数组的和为:"<<max<<endl; return 0; }
转载于:https://www.cnblogs.com/momo-jiji/p/3638019.html