zoukankan      html  css  js  c++  java
  • 杭电 1559 最大子矩阵

    Description

    给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。

    Input

    输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于1000的正整数。

    Output

    对于每组数据,输出一个整数,表示子矩阵的最大和。

    Sample Input

    1
    4 5 2 2
    3 361 649 676 588
    992 762 156 993 169
    662 34 638 89 543
    525 165 254 809 280

    Sample Output

    2474

    用二维数组map[i][j]表示前i行第j个数的和,把前i行的和压缩到第i行上。

     1 #include<cstdio>
     2 #include<string.h>
     3 int map[1010][1010];
     4 int main()
     5 {
     6     int t;
     7     int x,y,m,n,a,sum,max0;
     8     scanf("%d",&t);
     9     while(t--)
    10     {
    11         memset(map,0,sizeof(map));
    12         scanf("%d %d %d %d",&m,&n,&x,&y);
    13         for(int i = 1 ; i <= m ; i++)
    14         {
    15             for(int j = 1 ; j <= n ; j++)
    16             {
    17                 scanf("%d",&a);
    18                 map[i][j]=map[i-1][j]+a;                //map[i][j]表示前i行第j个数的和 
    19             }
    20         }
    21         max0=0;
    22         for(int i = x ; i <= m ; i++)                    //i从第x行开始(第x行的值表示序列前x行的和) 
    23         {
    24             for(int j = y ; j <= n ; j++)                
    25             {
    26                 sum=0;
    27                 for(int k = j-y+1 ; k <= j ; k++)        //控制k的范围为y 
    28                 {
    29                     sum+=(map[i][k]-map[i-x][k]);        //求出x*y矩阵的和 
    30                 }
    31                 if(sum > max0)
    32                 {
    33                     max0=sum;
    34                 }
    35             }
    36         }
    37         printf("%d
    ",max0);
    38     }
    39 }
    
    
    
     
  • 相关阅读:
    451. Sort Characters By Frequency
    424. Longest Repeating Character Replacement
    68. Text Justification
    44. Wildcard Matching
    160. Intersection of Two Linked Lists
    24. Swap Nodes in Pairs
    93. 递归实现组合型枚举
    98. 分形之城
    97. 约数之和
    96. 奇怪的汉诺塔
  • 原文地址:https://www.cnblogs.com/yexiaozi/p/5751816.html
Copyright © 2011-2022 走看看