AcWing 126 最大的和

2021-10-18 13:26:22 字數 1085 閱讀 8194

給定乙個包含整數的二維矩陣,子矩形是位於整個陣列內的任何大小為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,表示方形二維陣列的大小。

從第二行開始,輸入由空格和換行符隔開的n2個整數,它們即為二維陣列中的n2個元素,輸入順序從二維陣列的第一行開始向下逐行輸入,同一行資料從左向右逐個輸入。

陣列中的數字會保持在[-127,127]的範圍內。

輸出格式

輸出乙個整數,代表最大子矩形的總和。

資料範圍

1≤n≤100

輸入樣例:

40 -2 -7 0 9 2 -6 2

-4 1 -4 1 -1

8 0 -2

輸出樣例:

15貪心題,首先確定二維陣列的上下界,之後輸入二位陣列每乙個資料的時候求出列方向的字首和,之後模擬一維陣列的做法。

一位陣列是,設s[i]為以i為下標的數為結尾的最大子陣列的和。所以可以初步得到遞推公式s[i]=s[i-1]+wi(wi為第i個數),化簡一下,所以最終遞推公式為s[i]=max(s[i-1],0)+wi;

#include

using

namespace std;

const

int n=

110;

int n;

int s[n]

[n];

intmain()

}int res=

-127

;for

(int i=

1;i<=n;i++)}

} cout

}

AcWing 126最大的和

題目描述 給定乙個包含整數的二維矩陣,子矩形是位於整個陣列內的任何大小為1 1或更大的連續子陣列。矩形的總和是該矩形中所有元素的總和。在這個問題中,具有最大和的子矩形被稱為最大子矩形。例如,下列陣列 0 2 7 0 9 2 6 2 4 1 4 1 1 8 0 2其最大子矩形為 9 2 4 1 1 8...

Acwing 126 最大的和(二維字首和)

給定乙個包含整數的二維矩陣,子矩形是位於整個陣列內的任何大小為1 1或更大的連續子陣列。矩形的總和是該矩形中所有元素的總和。在這個問題中,具有最大和的子矩形被稱為最大子矩形。例如,下列陣列 0 2 7 0 9 2 6 2 4 1 4 1 1 8 0 2 其最大子矩形為 9 2 4 1 1 8 它擁有...

AcWing 135 最大子序和

acwing 135.最大子序和 大佬講解 原題解鏈結見文末 單調佇列 o n 首先單調佇列,不同一般的佇列,他需要的stl是deque 雙端佇列,因為我們要支援隊頭插入和隊尾插入.單調佇列做法大致如下 首先我們需要找到單調性,這道題目的顯而易見.我們知道區間和的做法,一般都是字首和,而字首和的求法...