最大的和題解 貪心

2021-10-18 10:36:57 字數 1263 閱讀 6816

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

對於這一題來說相對來說比較容易想到的解題方法是採用4重迴圈來分別列舉矩形的起點和終點,再利用我們平時用的字首和陣列進行計算,但是這樣是時間複雜度會達到o(n^4)會比較慢

//求和陣列

int n;

intmain()

}int res = int_min;

//i和j是邊界的列舉

題解 最大的和

解法一 分治思想 include include include using namespace std int n,a 200200 int fun int l,int r sum 0 for int i mid 1 i r i 不斷更新右側陣列中元素和的最大值 return max max fu...

最大的和 最大子矩陣和 貪心 字首和 dp

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

培訓貪心題解

在第乙個城市加滿,之後每到乙個城市加一公升油,直到滿足最低油耗量。注意有可能在第乙個城市就超過最低油耗量。include using namespace std int main 使用k次最大值的表情,再使用一次第二大值的表情,迴圈直到m次。include using namespace std l...