1 #include<bits/stdc++.h> 2 using namespace std; 3 #define MINX -100000 4 #define MAXN 10000 5 #define hang 3 6 #define lie 6 7 8 int Ywmaxarray(int * arr, int len) //找一维数组中最大子数和 9 { 10 int i, sum = arr[0], ans = 0; 11 for (i = 0; i < len; ++i) 12 { 13 if (ans>0)ans += arr[i]; 14 else ans = arr[i]; 15 if (ans>sum)sum = ans; 16 } 17 return sum; 18 } 19 20 int Ewmaxarray(int arr[hang][lie] ,int line , int column) //找二维数组中最大子数和 21 { 22 int k,ans=MINX; 23 int sum[MAXN]; 24 for(int i = 0 ; i<line ; i++){memset(sum,0,sizeof(sum)); //sum为新的一维数组,每次使用前将其初始化 25 for(int j = i ; j < line ; j++ ){ //形成新的一维数组,并且传入到Ywmaxarray函数中去判断最大子数和 26 for(k = 0 ; k < column ; k ++){sum[k]+=arr[j][k];} 27 int maxs = Ywmaxarray(sum,k); 28 if(maxs>ans) 29 ans = maxs; 30 } 31 } 32 return ans; 33 } 34 35 int main( int argc , const char * argv[]) 36 { 37 int num[hang][lie]={{5,6,-3, 8, -9, 2}, 38 {1,-12,20,0,-3,-5}, 39 {-9,-7,-3,6,7, -1}}; 40 int answer = Ewmaxarray(num,hang,lie); 41 cout << answer << endl; 42 return 0; 43 }
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。