【发布时间】:2013-03-20 06:53:27
【问题描述】:
我需要在 C++ 中编写递归函数,在仅包含 1 或 0 的二维数组中找到数字“1”的最大区域。
例子:
int Arr[5][8] =
{
{ 0, 0, 0, 0, 1, 1, 0, 0, },
{ 1, 0, 0, 1, 1, 1, 0, 0, },
{ 1, 1, 0, 1, 0, 1, 1, 0, },
{ 0, 0, 0, 1, 1, 1, 1, 0, },
{ 0, 1, 1, 0, 0, 0, 0, 0, },
};
视觉示例:http://s23.postimg.org/yabwp6h23/find_largest.png
这个数组的最大面积是 12,第二大是 3,第三大是 2。
我想用类似于洪水填充算法的东西来做到这一点,但就是不知道怎么做。
【问题讨论】:
-
洪水填充会起作用。如果您卡在某个地方,您应该发布您的尝试并描述您的问题。
-
也许对于每个等于 1 的元素,检查 North、South East 和 West,然后增加并再次检查。此外,将递增的数组索引添加到忽略列表。洪水填充算法有很多,知道哪个是最好的会很有趣。