标签:memset define 分享 http cin max += ring turn
[http://poj.org/problem?id=1050]
给你一个矩阵,让你求子矩阵中的元素之和最大
其实跟最大和子序列一样只不过维数增加了,你只需要降维就好了
#include<iostream>
#include<string.h>
using namespace std;
#define ll long long
int m[200][200];
int main(){
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int n,i,j,k;
while(cin>>n){
memset(m,0,sizeof(m));
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
cin>>m[i][j],m[i][j]+=m[i-1][j];
}
int sum=0;
int ans=-130;
for(i=1;i<=n;i++){
for(j=i;j<=n;j++){
sum=0;
for(k=1;k<=n;k++){
sum+=m[j][k]-m[i-1][k];//第k列第i个元素到第j个元素之和
if(sum<0) sum=0;//如果小于0从新的地方开始
if(sum>ans) ans=sum;//更新最大值
}
}
}
cout<<ans<<endl;
}
return 0;
}
标签:memset define 分享 http cin max += ring turn
原文地址:https://www.cnblogs.com/mch5201314/p/9744777.html