演算法筆記_176:曆屆試題 最大子陣(Java)

來源:互聯網
上載者:User

標籤:解決方案   資料規模   min   參考   java   技術   imp   code   out   

目錄

1 問題描述

2 解決方案

  1 問題描述問題描述  給定一個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。

 

 

2 解決方案

代碼參考自文末參考資料,同樣思想的Java版本運行逾時。具體思想講解請見文末參考資料。

 

具體代碼如下:

import java.util.Scanner;public class Main {    public static int n, m;    public static long[][] map;    public static long result = Long.MIN_VALUE;            public static void main(String[] args) {        Scanner in = new Scanner(System.in);        n = in.nextInt();        m = in.nextInt();        map = new long[n][m];        for(int i = 0;i < n;i++)            for(int j = 0;j < m;j++)                map[i][j] = in.nextLong();        for(int start = 0;start < n;start++) {  //開始行            long[] ring = new long[m];            long[] dp = new long[m];            for(int end = start;end < n;end++) {  //結束行                for(int j = 0;j < m;j++)      //計算start~end行的每一列元素和                    ring[j] += map[end][j];                result = Math.max(result, ring[0]);                dp[0] = ring[0];                for(int j = 1;j < m;j++) {                    if(dp[j - 1] < 0)                        dp[j] = ring[j];                    else                        dp[j] = dp[j - 1] + ring[j];                    result = Math.max(result, dp[j]);                }            }        }        System.out.println(result);    }}

 

 

 

參考資料:

   1.藍橋杯 曆屆試題 最大子陣

 

演算法筆記_176:曆屆試題 最大子陣(Java)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.