带迭代的洪水填充算法
Flood Fill Algorithm with iteration
我一直在做我的家庭作业,我需要用 c 语言编写的泛洪填充算法,但是不允许递归、结构和任何库(stdio.h 除外),我只能使用迭代。我已经为此工作了 3 天,但我做不到,我需要帮助
oldTeam(global variable) is target color
newTeam(global var.) is replacement color
x and y(both global) are row and colomn of the starting point of flood fill
pX and pY are variables to store initial coordinates of starting point
函数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;
}
我的代码或算法哪里出错了
(在问这个问题之前,我一直在这个网站上搜索这个主题 google 但我找到的解决方案包含递归、结构或不允许的库)
谢谢..
遍历数组中的所有元素。根据邻居确定哪些需要更改并进行更改。跟踪您是否有任何更改,如果有任何更改,请再次执行。
bool anyChange;
do {
anyChange = false;
... change what needs changing
} while (anyChange);
在极端情况下不是特别有效,但简单且有效。
我一直在做我的家庭作业,我需要用 c 语言编写的泛洪填充算法,但是不允许递归、结构和任何库(stdio.h 除外),我只能使用迭代。我已经为此工作了 3 天,但我做不到,我需要帮助
oldTeam(global variable) is target color
newTeam(global var.) is replacement color
x and y(both global) are row and colomn of the starting point of flood fill
pX and pY are variables to store initial coordinates of starting point
函数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;
}
我的代码或算法哪里出错了
(在问这个问题之前,我一直在这个网站上搜索这个主题 google 但我找到的解决方案包含递归、结构或不允许的库)
谢谢..
遍历数组中的所有元素。根据邻居确定哪些需要更改并进行更改。跟踪您是否有任何更改,如果有任何更改,请再次执行。
bool anyChange;
do {
anyChange = false;
... change what needs changing
} while (anyChange);
在极端情况下不是特别有效,但简单且有效。