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;}

原创粉丝点击