首页 > 代码库 > 最大子矩阵和

最大子矩阵和

https://www.51nod.com/tutorial/course.html#!courseId=8

解题关键:利用最大子序列和,将矩阵预处理一下,就可以将其转化了。

 

 

 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 ll arr[1000][1000]; 5 int main(){ 6     ll n,m,max1=0; 7     scanf("%lld%lld",&m,&n); 8     for(ll i=1;i<=n;i++){ 9         for(ll j=1;j<=m;j++){10             scanf("%lld",&arr[i][j]);11             arr[i][j]+=arr[i-1][j];12         }13     }14     for(ll i=0;i<n;i++){15         for(ll j=i+1;j<=n;j++){16             ll sum=0;17             for(ll k=1;k<=m;k++){18                 sum+=arr[j][k]-arr[i][k];19                 if(sum>max1) max1=sum;20                 if(sum<0) sum=0;21             }22         }23     }24     printf("%lld\n",max1);25 }

 

最大子矩阵和