poj1050

来源:互联网 发布:粤语翻译普通话软件 编辑:程序博客网 时间:2024/06/05 08:34

最大子矩阵

遍历 每一行 以低为界

遍历 改行与界之间的每一行

每一行 到 该行之间的每一列 分别相加 成为一个数组 

求数组最大连续子序列


#include<iostream>#include<cstdio>#include <cstring>#include <climits>using namespace std;int a[101][101],n,b[101],maxn;int get_max(int *bb,int nn){    int tmax=0,sum=0;    for(int i=1;i<=nn;++i)    {        if(sum>0) sum+=bb[i];        else sum=bb[i];        if(sum>tmax) tmax=sum;    }    return tmax;}int main(){    while(scanf("%d",&n)!=EOF)    {        for(int i=1;i<=n;++i)            for(int j=1;j<=n;++j)                scanf("%d",&a[i][j]);        maxn=0;        for(int i=1;i<=n;++i)        {            memset(b,0,sizeof(b));            for(int j=i;j<=n;++j)            {                for(int k=1;k<=n;++k)                    b[k]+=a[j][k];                maxn=max(maxn,get_max(b,n));            }        }        printf("%d\n",maxn);    }    return 0;}


0 0
原创粉丝点击