poj 1050 to the max
来源:互联网 发布:app数据分析软件 编辑:程序博客网 时间:2024/05/18 01:24
#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#define MAX 102#define INF -0xFFFFFFusing namespace std;int a[MAX][MAX],b[MAX];int maxsum(int x,int y){ if(y-x==1) return b[x]; int L=INF,R=INF,v=0,ans=INF; int m=x+(y-x)/2; ans=max(ans,maxsum(x,m)); ans=max(ans,maxsum(m,y)); for(int i=m;i<y;i++) {v+=b[i];R=max(R,v);} v=0; for(int i=m-1;i>=0;i--) {v+=b[i];L=max(L,v);} return max(ans,L+R);}int main(){ //freopen("data.txt","r",stdin); int N; while(cin>>N) { int ans=INF; for(int i=0;i<N;i++) for(int j=0;j<N;j++) cin>>a[i][j]; for(int i=0;i<N;i++) for(int j=i;j<N;j++) { memset(b,0,sizeof(b)); for(int u=0;u<N;u++) for(int k=i;k<=j;++k) b[u]+=a[k][u]; ans=max(ans,maxsum(0,N)); } printf("%d\n",ans); } return 0;}