void floodfill(int img[frame][frame],int mark[frame][frame],int srow,int scol)
{
mark[srow][scol]=1;
//左
if( scol-1>=0 && img[srow][scol-1]==1 && mark[srow][scol-1]==0 )//没越界,黑点,且没填充
{
floodfill(img,mark,srow,scol-1);
}
//上
if( srow-1>=0 && img[srow-1][scol]==1 && mark[srow-1][scol]==0 )
{
floodfill(img,mark,srow-1,scol);
}
//右
if( scol+1<frame && img[srow][scol+1]==1 && mark[srow][scol+1]==0 )
{
floodfill(img,mark,srow,scol+1);
}
//下
if( srow+1<frame && img[srow+1][scol]==1 && mark[srow+1][scol]==0 )
{
floodfill(img,mark,srow+1,scol);
}
}
{
mark[srow][scol]=1;
//左
if( scol-1>=0 && img[srow][scol-1]==1 && mark[srow][scol-1]==0 )//没越界,黑点,且没填充
{
floodfill(img,mark,srow,scol-1);
}
//上
if( srow-1>=0 && img[srow-1][scol]==1 && mark[srow-1][scol]==0 )
{
floodfill(img,mark,srow-1,scol);
}
//右
if( scol+1<frame && img[srow][scol+1]==1 && mark[srow][scol+1]==0 )
{
floodfill(img,mark,srow,scol+1);
}
//下
if( srow+1<frame && img[srow+1][scol]==1 && mark[srow+1][scol]==0 )
{
floodfill(img,mark,srow+1,scol);
}
}
本文介绍了一种基于递归实现的洪水填充算法,该算法用于二维数组中特定连通区域的填充标记。通过四个基本方向(上、下、左、右)进行遍历,将指定区域内值为1的元素进行标记,确保不遗漏任何一部分相连的区域。
7725

被折叠的 条评论
为什么被折叠?



