dp 最大子矩陣面積

2022-05-01 12:21:10 字數 722 閱讀 9662

在乙個平面內隨機出現一些連續的區域,以這些區域構成乙個矩形,求最大的矩形面積。

解決這一類問題的思路是:列舉所有高度,通過記憶化記錄左右側最遠能到達的區域。

以下以乙個類似柱狀圖的模型來說明:

要求求出圖中最大的矩形面積。

圖中存在四個不同的高度。

高度1左右都沒有更高的,記l1=1,r1=1

高度2是最低的,記l2=1,r2=4

高度3左右都沒有更高的,記l3=1,r3=4

高度4左側有乙個更高的,記l4=3,r4=4

由於更高有繼承性(如已知a比b高,當b比c高時,c可以直接跳到a處)

該記憶化可以用以下**實現:

a[0]=-1;//高度

a[n+1]=-1;

for(j,1,n)

l[j]=j,r[j]=j;//左右能到達

l[0]=1;

r[n+1]=n;

for(j,1,n)

while(a[l[j]-1]>=a[j])

l[j]=l[l[j]-1];

rof(j,n,1)

while(a[r[j]+1]>=a[j])

r[j]=r[r[j]+1];

要注意l和r的遍歷方向是不同的。

複雜度為o(n)。

最大子矩陣 DP

time limit 10000ms memory limit 165888kb 64bit io format lld llu hysbz 1084 這裡有乙個n m的矩陣,請你選出其中k個子矩陣,使得這個k個子矩陣分值之和最大。注意 選出的k個子矩陣不能相互重疊。第一行為n,m,k 1 n 10...

最大子矩陣 dp

已知矩陣的大小定義為矩陣中所有元素的和。給定乙個矩陣,你的任務是找到最大的非空 大小至少是1 1 子矩陣。比如,如下4 4的矩陣 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...

求矩陣的最大子矩陣面積

問題引入 求解直方圖中最大的矩形面積 核心思想 讓二維陣列轉換成多層的一維陣列,再根據一維陣列構建直方圖 主函式,讓二維陣列轉換成多層的一維陣列,再根據一維陣列構建直方圖 public intmaxrecsize int map int maxarea 0 int height newint map...