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

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1559

     1 #include <cstring>
     2 #include <cstdlib>
     3 #include <cstdio>
     4 #include <iostream>
     5 #include <algorithm>
     6 using namespace std;
     7 const int maxn = 1000+10;
     8 const int INF = 1<<28;
     9 int map[maxn][maxn];  //表示以[1,1]为左上角,以[i,j]为右下角的矩形的和
    10 
    11 int main()
    12 {
    13     int t, i, j, m, n, x, y;
    14     int s1, sc, Max, ans;
    15     scanf("%d", &t);
    16     while(t--)
    17     {
    18         memset(map, 0, sizeof(map));
    19         Max = -INF;
    20         scanf("%d%d%d%d", &m, &n, &x, &y);
    21         for(i = 1; i <= m; i++)
    22         {
    23             s1 = 0;
    24             for(j = 1; j <= n; j++)
    25             {
    26                 scanf("%d", &sc);
    27                 s1 += sc;
    28                 map[i][j] = s1+map[i-1][j];
    29             }
    30         }
    31         for(i = 1; i <= m; i++)
    32             for(j = 1; j <= n; j++)
    33                 if((i+x-1)<=m && (j+y-1)<=n)
    34                 {
    35                     ans = map[i+x-1][j+y-1]-map[i+x-1][j-1]-map[i-1][j+y-1]+map[i-1][j-1];//减出来就是以[i,j]
    36                     //为左顶点,大小为xy的矩形的和
    37                     if(Max < ans)
    38                         Max = ans;
    39                 }
    40         printf("%d
    ", Max);
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    叶问14
    叶问13
    叶问12
    叶问11
    叶问10
    叶问9
    Java三种循环之间的区别
    利用Java对象数组制作简易学生管理系统
    什么叫java方法重载?
    Java编译器的常量优化
  • 原文地址:https://www.cnblogs.com/bfshm/p/3569693.html
Copyright © 2011-2022 走看看