矩陣中全為1的矩形面積的最大值

2021-09-26 02:52:59 字數 1481 閱讀 1360

問題描述:

給定乙個矩陣,該矩陣中的元素只包含1和0,找出該矩陣中全為1的矩形面積的最大值。

如:1 1 0 0 0

1 0 0 0 1

1 0 0 0 1

對應的矩形面積的最大值為3。

整體思路:

通過求解每列中到當前行的連續1的個數,然後將該題轉化為求解柱狀圖最大面積問題。

舉個栗子:

1 1 0 1 0

1 0 1 1 1

1 0 1 0 1

計算每列中到當前行的連續1的個數得到:

1 1 0 1 0

2 0 1 2 1

3 0 2 0 2

把得到的矩陣的每一行看成乙個柱狀圖,求每個柱狀圖可形成的最大面積,最終求最大,即為全為1的矩形面積的最大值。

其它步驟比較簡單,問題的關鍵就變成了柱狀圖可形成的最大面積的求解。柱狀圖可形成的最大面積問題詳見這裡。

c++**

// an highlighted block

#include

#include

#include

using namespace std;

//求矩陣中最大的全為1的矩形的面積

intmaxsquarearea

(int

* s,

int m,

int n)

;int

barsmaxarea

(int

* gheights,

int nitem)

;struct cell};

intmain()

cout<} cout

maxsquarearea

(s, m, n)

] s;

return0;

}int

maxsquarearea

(int

* s,

int m,

int n)

}int vmax =0;

for(

int i=

0;i++i)

return vmax;

}//計算柱狀圖最大面積

intbarsmaxarea

(int

* gheights,

int nitem)

else

node t

(height, currentposition)

;//當前節點

while

( s.

top(

).height > height)

} s.

push

(node

(height, t.startidx));

}return maxarea;

}

MaLab中求矩陣最大值

max函式和min函式 在matlab中,max和min函式分別能求一維的最大值和一維的最小值 如果想求二維矩陣x的最大值,可用max max x 這裡不是特別明白,有時間的話找高人問一下 a rand 4,5 取隨機數,也可以像你那樣input手工輸入。m,ind max a 最大值及其索引,a ...

子矩陣和的最大值

本部落格只是為了記錄我剛了解的演算法思想。首先是考慮一維的情況 可以這樣想從第乙個元素掃到最後乙個,不斷的維護最大值sum。當掃到第 i 個元素的時候,子陣列的和要 麼加上這個元素,要麼從這個元素從新開始。當前面i 1的子陣列的和小於0,那麼加上第i個元素,會比直接用 第i個元素開始小。相反,如果前...

1102 面積最大的矩形

有乙個正整數的陣列,化為直方圖,求此直方圖包含的最大矩形面積。例如 2,1,5,6,2,3,對應的直方圖如下 面積最大的矩形為5,6組成的寬度為2的矩形,面積為10。收起第1行 1個數n,表示陣列的長度 0 n 50000 第2 n 1行 陣列元素a i 1 a i 10 9 輸出最大的矩形面積62...