給定乙個包含整數的二維矩陣,子矩形是位於整個陣列內的任何大小為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 雙端佇列,因為我們要支援隊頭插入和隊尾插入.單調佇列做法大致如下 首先我們需要找到單調性,這道題目的顯而易見.我們知道區間和的做法,一般都是字首和,而字首和的求法...