題目:給定乙個整型矩陣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 ...