graphics - 我想要没有堆栈且没有递归的Flood Fill

标签 graphics recursion stack flood-fill

我想知道如何在数组上应用洪水填充,我的数组是二维的,其中包含 times new roman 字体类型的字母边界。 边界线包含 1,内外全为 0。 我只想在内部填充所有 1 而不是 0。 但我需要一个不需要更多内存的逻辑。 所以避免递归和堆栈或队列

最佳答案

我通常不给别人做作业,但我喜欢挑战:

int c = -1;
while (c < 0)
{    
    /* Store breadcrumb trail, look to carry on */
    a[x][y] = c--;
    if (!hunt(0))
    {
        /* Nowhere to go, so back-track by looking for breadcrumb */
        a[x][y] = 1;
        c += 2;
        hunt(c);
    }
}

bool_t hunt(int v)
{
    if (a[x-1][y] == v)  { x--; return TRUE; }
    if (a[x+1][y] == v)  { x++; return TRUE; }
    if (a[x][y-1] == v)  { y--; return TRUE; }
    if (a[x][y+1] == v)  { y++; return TRUE; }
    return FALSE;
}

请注意,这不会检查是否到达数组的边缘。此外,它假设您的数组元素是例如int,并且您只在图像中使用值 01

关于graphics - 我想要没有堆栈且没有递归的Flood Fill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4002873/

相关文章:

c++ - 为什么我不能将这个从我的 BST 获取的节点推送到这个堆栈中?

image - 在黑莓中使用 Bitmap 还是 EncodedImage 更好?

objective-c - 检测绘制图像的百分比是 "erased"

php - 指数函数算法

C++ 二叉树插入/高度

python - Python中的最大递归级别

C++ STL 容器 - 关于类型的一些问题?

java - 是否可以在 Windows 2008 服务器上使用 Java FX 启用硬件加速?

algorithm - Q-Learning 算法的实现是递归的吗?

有人可以澄清这段代码吗?