求01矩陣的最大面積

2021-08-26 12:29:40 字數 1072 閱讀 9975

題目:給定乙個整型矩陣map,其中的值只有0和1兩種,求其中全是1的所有矩形區域中,最大的矩形區域為1的數量。

輸出: 6

思路:以每一行做切割,統計以當前行作為底的情況下,每個位置往上的連續1的數量,使用高度陣列height來表示。

以第一行切割後,height = .

以第二行切割後,height = .

以第三行切割後,heigth = .

用乙個棧來儲存height陣列的下標,當棧為空的時候或當前元素的值大於棧頂元素(height[s.top())的值,直接壓入棧。

當棧不為空,且當前元素的值小於或等於棧頂元素時,結算以當前元素的下標為右邊界,以棧頂元素下面的那個值為左邊界。高度就是當前元素,求得這個矩陣的大小。

後彈出棧頂元素,重複操作,直到當前元素大於棧頂元素或棧為空,壓入當前元素。

#include#include #include using  namespace std;

int maxrecfrombotton(int *height, int size)

s.push(i); //當前元素大於棧頂元素時,直接push

} //當陣列遍歷完了,別忘了棧中可能還有元素,

while (!s.empty())

return max;

}int maxrecsize(int map[4], int row)

int cur = maxrecfrombotton(height, col);

max = cur > max ? cur : max;

} return max;

}int main()

, ,

};int area = maxrecsize(map, 3); //面積

cout << area << endl;

cout << "hello..." << endl;

system("pause");

return 0;

}

島嶼的最大面積

給定乙個包含了一些 0 和 1的非空二維陣列 grid 乙個 島嶼 是由四個方向 水平或垂直 的 1 代表土地 構成的組合。你可以假設二維矩陣的四個邊緣都被水包圍著。找到給定的二維陣列中最大的島嶼面積。如果沒有島嶼,則返回面積為0。示例 1 0,0,1,0,0,0,0,1,0,0,0,0,0 0,0...

島嶼的最大面積

給定乙個包含了一些 0 和 1的非空二維陣列 grid 乙個 島嶼 是由四個方向 水平或垂直 的 1 代表土地 構成的組合。你可以假設二維矩陣的四個邊緣都被水包圍著。找到給定的二維陣列中最大的島嶼面積。如果沒有島嶼,則返回面積為0。示例 1 0,0,1,0,0,0,0,1,0,0,0,0,0 0,0...

島嶼的最大面積

題目 給定乙個包含了一些 0 和 1的非空二維陣列 grid 乙個 島嶼 是由四個方向 水平或垂直 的 1 代表土地 構成的組合。你可以假設二維矩陣的四個邊緣都被水包圍著。找到給定的二維陣列中最大的島嶼面積。如果沒有島嶼,則返回面積為0。示例 1 0,0,1,0,0,0,0,1,0,0,0,0,0 ...