我遇到麻烦了。

golinjin 2002-12-16 03:34:25
假设有数组:
int array[5][5]={{1,1,0,0,1},
{1,0,1,0,0},
{0,0,1,1,1},
{1,1,0,1,0},
{1,0,1,1,0}};
从头开始向后搜索,当遇到的元素(array[0][2])值是0时,如何将与此元素相邻(包括间接相邻)且值也为0的所以元素进行遍历呢?就上例来说,当遇到array[0][2]时,要对
array[0][3],array[1][1],array[1][3],array[1][4],array[2][0],array[2][1]
array[3][2],array[4][1]进行遍历,顺序无所谓,但必须全部遍历到。
...全文
28 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ywchen2000 2002-12-18
  • 打赏
  • 举报
回复
学习
GZCompiler 2002-12-16
  • 打赏
  • 举报
回复
用递归函数:
void fun(int i,int j) //i,j表示搜索的起始点
{
if(i<0 || i==5 ||j<0 || j==5)
return;
for(int a=-1;a<2;a++)
{
for(int b=-1;b<2;b++)
{
if(array[i+a][j+b]==0) //遍历某点周围的点是否为0
{
fun(i+a,j+b);
}
}
}
}

只是算法描述,具体实现代码还要在此基础上修改。
SwordMan2001 2002-12-16
  • 打赏
  • 举报
回复
就是迷宫问题的变化版
比如可以先再外面包上一层1,做个围墙(防越界或判断的麻烦);
然后用递归,
或用堆栈(保存当前位置及搜索方向)遍历,当然要注意标记已经走过了的地方,栈空退出即完成。
Stephen_Ma 2002-12-16
  • 打赏
  • 举报
回复
将自己和已经遍历过的设为其它值,用递归检查其相邻值。
golinjin 2002-12-16
  • 打赏
  • 举报
回复
谁能讲讲思路或算法就行了,谢谢

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧