具有迭代的洪水填充算法

时间:2015-04-07 12:35:15

标签: c flood-fill

我一直在做我的作业,我需要在c中使用泛洪填充算法,但递归,结构和任何库(stdio.h除外)都没有,我被允许只使用迭代。我已经工作了3天但我做不到,我需要帮助

  

oldTeam(全局变量)是目标颜色

     

newTeam(全局变种)是替换颜色

     

x和y(全局)是洪水填充起点的行和colomn

     

pX和pY是存储起点初始坐标的变量

并且函数hasNeighbor(x,y)搜索是否有任何颜色是目标颜色:

 int hasNeighbor(int x,int y)
{
    if(table[x+1][y]==oldTeam || table[x+1][y+1]==oldTeam || table[x+1][y-1]==oldTeam || table[x][y+1]==oldTeam || table[x][y-1]==oldTeam || table[x-1][y]==oldTeam || table[x-1][y-1]==oldTeam || table[x-1][y+1]==oldTeam)
        return 1;
    else
        return 0;

    }

我的代码或算法中出现错误

(在问这个问题之前,我一直在这个网站和谷歌搜索这个主题,但我找到的解决方案包含递归,结构或不允许的库)

谢谢..

1 个答案:

答案 0 :(得分:0)

对数组中的所有元素进行一次传递。确定哪些需要根据邻居进行更改并进行更改。跟踪您是否有任何更改,如果有任何更改,请再次执行此操作。

bool anyChange; 
do { 
    anyChange = false; 
    ... change what needs changing
} while (anyChange);

在极端情况下不是特别有效,但简单且有效。