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));
		memset(a1,0,sizeof(a1));
		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){
			for(int i=k;i<=n;++i)
				for(int m=1;m<=n;++m)
					a1[i][m]=a1[i][m-1]+a[i][m];
			for(int i=k;i<=n;++i){
				for(int m=1;m<=n;++m){
					a1[i][m]=max(a1[i][m],a1[i-1][m]+a1[i][m]);
					ans=max(ans,a1[i][m]);
				}
			}
		}
		cout<<ans<<endl;		
	}
}

Double click to view unformatted code.


Back to problem 182