View Code of Problem 182

#include<iostream>
#include<algorithm>
#include<Cstring>
using namespace std;
int main(){
	int n;
	while(cin>>n){
		int a[n+2][n+2],a1[n+2][n+2];
		memset(a,0,sizeof(a));
		for(int i=1;i<=n;++i)
			for(int m=1;m<=n;++m)
				scanf("%d",&a[i][m]);
		int ans=-0x3f3f3f;
		for(int k=1;k<=n;++k){
			memset(a1,0,sizeof(a1));
			for(int i=k;i<=n;++i)
				for(int m=1;m<=n;++m)
					a1[m][i]=a1[m][i-1]+a[m][i];
			for(int i=k;i<=n;++i){
				for(int m=1;m<=n;++m){
					a1[m][i]=max(a1[m][i],a1[m-1][i]+a1[m][i]);
					ans=max(ans,a1[m][i]);
				}
			}
		}
		cout<<ans<<endl;		
	}
}

Double click to view unformatted code.


Back to problem 182