zoukankan      html  css  js  c++  java
  • hdu 1559(简单的dp)最大子矩阵

    题意:就是给你一个mXn的矩阵,然后让你在其中找一个和最大的xXy的矩阵。。。

    思路:我觉得dp就是递推,根据前面的推出后面的,每个矩阵的和我有右下角的点记录:dp[i][j]....

    代码实现:

    #include<stdio.h>
    #include<string.h>
    int a[1001][1001],dp[1001][1001]={0};
    int T,m,n,x,y,i,j,max;
    int nima1(int i)
    {
        int sum=0,j;
        for(j=1;j<=y;j++)
             sum=sum+a[i][j]-a[i-x][j];
        return sum;
    }
    int nima2(int i,int j)
    {
        int sum=0,k;
        for(k=i-x+1;k<=i;k++)
            sum=sum+a[k][j]-a[k][j-y];
        return sum;
    }
    int main()
    {
        scanf("%d",&T);
        while(T--)
        {
           scanf("%d%d%d%d",&m,&n,&x,&y);
           max=-1;
           for(i=1;i<=m;i++)
               for(j=1;j<=n;j++)
               {
                   scanf("%d",&a[i][j]);
                   dp[i][j]=0;
               }
           for(i=1;i<=x;i++)
               for(j=1;j<=y;j++)
                   dp[x][y]+=a[i][j];
           if(max<dp[x][y])
               max=dp[x][y];
           for(i=x+1;i<=m;i++)
           {
               dp[i][y]=dp[i-1][y]+nima1(i);
               if(max<dp[i][y])
                   max=dp[i][y];
           }
           for(i=x;i<=m;i++)
               for(j=y+1;j<=n;j++)
               {
                   dp[i][j]=dp[i][j-1]+nima2(i,j);
                   if(dp[i][j]>max)
                       max=dp[i][j];
               }
           printf("%d\n",max);
        }
        return 0;
    }
  • 相关阅读:
    当模型验证未通过时,获取未通过验证的属性
    在ASP.Net MVC中进行身份认证
    c#生成验证码
    HTTP与FTP状态码
    VUEX
    JS模块化
    Vue.JS入门下
    flex布局
    asp.net Web API
    JWT加密解密
  • 原文地址:https://www.cnblogs.com/jiangjing/p/2964253.html
Copyright © 2011-2022 走看看