我一直在做我的作业,我需要在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;
}
我的代码或算法中出现错误
(在问这个问题之前,我一直在这个网站和谷歌搜索这个主题,但我找到的解决方案包含递归,结构或不允许的库)
谢谢..
答案 0 :(得分:0)
对数组中的所有元素进行一次传递。确定哪些需要根据邻居进行更改并进行更改。跟踪您是否有任何更改,如果有任何更改,请再次执行此操作。
bool anyChange;
do {
anyChange = false;
... change what needs changing
} while (anyChange);
在极端情况下不是特别有效,但简单且有效。