• 最大子阵


      历届试题 最大子阵  
    时间限制:1.0s   内存限制:256.0MB
        
    问题描述
      给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大。

      其中,A的子矩阵指在A中行和列均连续的一块。
    输入格式
      输入的第一行包含两个整数n, m,分别表示矩阵A的行数和列数。
      接下来n行,每行m个整数,表示矩阵A。
    输出格式
      输出一行,包含一个整数,表示A中最大的子矩阵中的元素和。
    样例输入
    3 3
    -1 -4 3
    3 4 -1
    -5 -2 8
    样例输出
    10
    样例说明
      取最后一列,和为10。
    数据规模和约定
      对于50%的数据,1<=n, m<=50;
      对于100%的数据,1<=n, m<=500,A中每个元素的绝对值不超过5000。
     
     
     
     1 #include <iostream>
     2 using namespace std;
     3 int main(){
     4     int dp[501][501] = {0};
     5     int n, m;
     6     cin >> n >> m;
     7     for(int i = 1; i <= n; i++){
     8         for(int j = 1; j <= m; j++){
     9             int t;
    10             cin >> t;
    11             //每一行存的是与上面行的和(上面所有行)
    12             dp[i][j] += dp[i - 1][j] + t;
    13         }
    14     } 
    15     int s = 0;
    16     int max = -99999999;
    17     for(int i = 1; i <= n; i++){
    18         for(int j = i; j <= n; j++){
    19             s = 0;
    20             for(int k = 1; k <= m; k++){
    21                 s += dp[j][k] - dp[i - 1][k];//按先按列走,然后按行数间隔递增的顺序(最外俩个循环) 
    22                 if(s > max){
    23                     max = s;
    24                 } 
    25                 if(s < 0){
    26                     s = 0;
    27                 }
    28             }
    29         }
    30     } 
    31     cout << max;
    32     return 0;
    33 }
  • 相关阅读:
    Json 基于jQuery+JSON的省市联动效果
    事务隔离级别的理解
    java实现爬虫功能
    最简单的文件上传
    SpringMVC视图解析器
    Date类型与字符串之间的转换
    Java:过去、未来的互联网编程之王
    cocos2d-x游戏开发之动画
    CCF真题之模板生成系统
    CCF真题之日期计算
  • 原文地址:https://www.cnblogs.com/AGoodDay/p/10580506.html
Copyright © 2020-2023  润新知