hdu 1081 To The Max

以前写过这篇的博。。

http://blog.csdn.net/u011262722/article/details/10061865


求最大子矩阵和,关键在于矩阵预处理。

然后就是 要注意比较的顺序= =。这次又弱弱地被坑!


#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;

int a[110][110];

int main()
{
    int n,tmp;
    while(scanf("%d",&n)!=EOF)
    {
        memset(a,0,sizeof(a));
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                scanf("%d",&tmp);
                a[i][j]=a[i][j-1]+tmp;
            }
        }
        int maxsum=-0xffffff,sum;
        for(int i=1;i<=n;i++)
        {
            for(int j=i;j<=n;j++)
            {
                sum=0;
                for(int k=1;k<=n;k++)
                {
                    sum+=(a[k][j]-a[k][i-1]);
                    if(sum<0) sum=0;
                    if(sum>maxsum)
                        maxsum=sum;
                }
            }
        }
        printf("%d\n",maxsum);
    }
    return 0;
}


hdu 1081 To The Max

上一篇:linux驱动开发--字符设备:信号量


下一篇:重载函数调用运算符