zoukankan      html  css  js  c++  java
  • 2021寒假每日一题《最大的和》

    最大的和

    题目来源:《信息学奥赛一本通》
    时间限制:\(1000ms\) 内存限制:\(64mb\)

    题目描述

    给定一个包含整数的二维矩阵,子矩形是位于整个阵列内的任何大小为 \(1 * 1\) 或更大的连续子阵列。
    矩形的总和是该矩形中所有元素的总和。
    在这个问题中,具有最大和的子矩形被称为最大子矩形。

    例如,下列数组:

     0 -2 -7  0
     9  2 -6  2
    -4  1 -4  1
    -1  8  0 -2
    

    其最大子矩形为:

     9  2
    -4  1
    -1  8
    

    它拥有最大和 15

    输入格式

    输入中将包含一个 \(N * N\) 的整数数组。
    第一行只输入一个整数 \(N\) ,表示方形二维数组的大小。
    从第二行开始,输入由空格和换行符隔开的 \(N^2\) 个整数,它们即为二维数组中的 \(N^2\) 个元素,输入顺序从二维数组的第一行开始向下逐行输入,同一行数据从左向右逐个输入。
    数组中的数字会保持在 \([-127,127]\) 的范围内。

    输出格式

    输出一个整数,代表最大子矩形的总和。

    数据范围

    \(1 ≤ N ≤ 100\)

    样例输入

    4
    0 -2 -7 0 9 2 -6 2
    -4 1 -4  1 -1
    
    8  0 -2
    

    样例输出

    15
    

    解题思路

    AcWing 126. 最大的和:Tell_me

    解题代码-Java

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            int n = input.nextInt();
            int[][] array = new int[n + 1][n + 1];
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= n; j++) {
                    array[i][j] = input.nextInt();
                    array[i][j] += array[i - 1][j];
                }
            }
            input.close();
    
            int ans = Integer.MIN_VALUE;
            for (int i = 1; i <= n; i++) {
                for (int j = i; j <= n; j++) {
                    int last = 0;
                    for (int k = 1; k <= n; k++) {
                        last = Math.max(last, 0) + array[j][k] - array[i - 1][k];
                        ans = Math.max(ans, last);
                    }
                }
            }
    
            System.out.println(ans);
        }
    }
    
  • 相关阅读:
    EMV/PBOC解析(三) TLV格式解析(C#)
    写自己的WPF样式
    EMV/PBOC 解析(二) 卡片数据读取
    FLEX 图片拷贝
    重学浏览器(2)-进程间的交互
    重学浏览器(1)-多进程多线程的浏览器
    实现财务自由-《富爸爸穷爸爸》读书语句摘抄
    mini-css-extract-plugin简介
    egg.js路由的优雅改造
    node中异步IO的理解
  • 原文地址:https://www.cnblogs.com/hurentian/p/14349757.html
Copyright © 2011-2022 走看看