链接:点击打开链接
题意:给出一个矩阵,求出最大子矩阵和
代码:
#include <iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; long long a[505][505]; long long b[505],m,n; int main() { long long i,j,k,sum,maxx,temp; while(cin>>n>>m) { for(i=1;i<=m;i++) for(j=1;j<=n;j++) scanf("%lld",&a[i][j]); maxx=0; for(i=1;i<=m;i++) { memset(b,0,sizeof(b)); for(j=i;j<=m;j++) { for(k=1;k<=n;k++) b[k]+=a[j][k]; //转化为求最大子序列的和 sum=temp=0; for(k=1;k<=n;k++) { sum+=b[k]; if(sum>=0) temp=max(sum,temp); else sum=0; } maxx=max(temp,maxx); } } cout<<maxx<<endl; } return 0; }