动态规划入门——最大子矩阵

转载请注明出处:http://blog.csdn.net/a1dark

分析:这题由于时间比较松、所以捆绑之后暴力就解、时间1000ms、

#include<stdio.h>
#define N 1005
int a[N][N];
int b[N];
int main()
{
    int t,i,j,m,n,x,y,k,l,w,z;
    scanf("%d",&t);
    while(t--){
        int max=-1000;int sum;
        scanf("%d%d%d%d",&m,&n,&x,&y);
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
                scanf("%d",&a[i][j]);
        for(i=0,j=i+x-1;j<m;i++,j=i+x-1){    
            for(k=0;k<n;k++){
                b[k]=0;
                for(l=i;l<=j;l++)
                    b[k]+=a[l][k];
            }
            for(w=0,z=w+y-1;z<n;w++,z=w+y-1){
                sum=0;
                for(k=w;k<=z;k++)
                    sum+=b[k];
                if(sum>max)
                    max=sum;
            }
        }
        printf("%d\n",max);
    }
 return 0;
}

你可能感兴趣的:(ACM,动态规划入门)