zoukankan      html  css  js  c++  java
  • 杭电1081_二维dp

     题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081

    题目大意:给你一个n*n的二维数组, 让你求一个子矩阵, 要求输出和最大的是多少?

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <cstdlib>
     6 #include <cmath>
     7 #include <set>
     8 #include <map>
     9 #include <vector>
    10 using namespace std;
    11 
    12 int a[110][110], c[110][110], n;//c[i][j] 表示第 i 行前 j 个数的和
    13 int main()
    14 {
    15     while(~scanf("%d", &n))
    16     {
    17         memset(c, 0, sizeof(c));
    18         for(int i = 1; i <= n; i++){
    19             int m = 0;
    20             for(int j = 1; j <= n; j++){
    21                 scanf("%d", &a[i][j]);
    22                 m += a[i][j];
    23                 c[i][j] = m;
    24             }
    25         }       
    26         int MAX = a[1][1];                      
    27         for(int i = 1; i <= n; i++)
    28         {
    29             for(int j = i; j <= n; j++)// 把每行的c[1][j] - c[1][i] 当成一个数, 竖着看, 为一列数, 求这列数的最大连续子序列
    30             {
    31                 int m = 0;  
    32                 for(int k = 1; k <= n; k++)
    33                 {
    34                     m += c[k][j] - c[k][i - 1];
    35                     if(m > MAX)
    36                         MAX = m;
    37                     if(m < 0)//当小于0时,m重新赋值
    38                         m = 0;
    39                 } 
    40             }
    41         }
    42         printf("%d
    ", MAX);
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    大白话五种IO模型
    test
    shutil模块(了解)
    isinstance和issubclass
    变量的三个特征
    匿名函数
    javascript location 对象
    select元素javascript常用操作
    设置mysql的用户权限
    jquery
  • 原文地址:https://www.cnblogs.com/luomi/p/5510348.html
Copyright © 2011-2022 走看看