数据结构-->迷宫-->递归求解
2008-05-26 12:59
239 查看
int maze[7][10] = {1,1,1,1,1,1,1,1,1,1,
1,0,1,0,1,0,0,0,0,1,
1,0,1,0,1,0,1,1,0,1,
1,0,1,0,1,1,1,0,0,1,
1,0,1,0,0,0,0,0,1,1,
1,0,0,0,1,1,1,0,0,1,
1,1,1,1,1,1,1,1,1,1};
int find_path(int x,int y)
{
if(x == 1 && y == 1) //是否是迷宫出口
{
maze[x][y] = 2; //记录最后走过的路径
return 1;
}
else
if(maze[x][y] == 0 ) //是不是可以走
{
maze[x][y] = 2 ; //记录已经走过的路径
if((find_path(x-1,y)+ //调用递归函数往上
find_path(x+1,y)+ //往下
find_path(x,y-1)+ //往左
find_path(x,y+1)) > 0 ) //往右
return 1;
else
{
maze[x][y] = 0 ; //此路不通取消记录
return 0;
}
}
else
return 0;
}
int main()
{
int i,j;
find_path(5,8); //调节器用递归函数
printf("path:\n");
for(i=1;i<6;i++) //输出迷宫的图形
{
for(j=1;j<9;j++)
printf("%d",maze[i][j]); //输出各坐标
printf("\n");
}
}
1,0,1,0,1,0,0,0,0,1,
1,0,1,0,1,0,1,1,0,1,
1,0,1,0,1,1,1,0,0,1,
1,0,1,0,0,0,0,0,1,1,
1,0,0,0,1,1,1,0,0,1,
1,1,1,1,1,1,1,1,1,1};
int find_path(int x,int y)
{
if(x == 1 && y == 1) //是否是迷宫出口
{
maze[x][y] = 2; //记录最后走过的路径
return 1;
}
else
if(maze[x][y] == 0 ) //是不是可以走
{
maze[x][y] = 2 ; //记录已经走过的路径
if((find_path(x-1,y)+ //调用递归函数往上
find_path(x+1,y)+ //往下
find_path(x,y-1)+ //往左
find_path(x,y+1)) > 0 ) //往右
return 1;
else
{
maze[x][y] = 0 ; //此路不通取消记录
return 0;
}
}
else
return 0;
}
int main()
{
int i,j;
find_path(5,8); //调节器用递归函数
printf("path:\n");
for(i=1;i<6;i++) //输出迷宫的图形
{
for(j=1;j<9;j++)
printf("%d",maze[i][j]); //输出各坐标
printf("\n");
}
}
相关文章推荐
- 【数据结构】递归求解迷宫问题
- 数据结构(迷宫求解c++)
- 数据结构之——迷宫递归求解
- 关于栈与递归求解迷宫与迷宫最短路径问题
- 迷宫求解(深搜)——递归和非递归
- 【数据结构】用回溯法求解迷宫问题
- 数据结构的应用------------迷宫求解
- 【数据结构】迷宫问题求解(链栈,DFS)
- 迷宫问题递归求解
- 【数据结构】迷宫(递归)
- 数据结构:栈和队列-迷宫问题求解
- [数据结构]求解迷宫最短路径问题
- 数据结构中的栈,在解决很多问题都有用处,比如括号匹配,迷宫求解,表达式求值等等 java中有封装好的类,可以直接调用。
- 数据结构的应用——使用栈和递归实现Hanoi问题求解
- 迷宫求解问题-递归(栈的应用)
- 递归和栈求解迷宫的最短路径
- C语言-数据结构-递归求解实例-8皇后问题
- 数据结构--用栈求解迷宫问题(非最优解)
- 利用递归来求解迷宫问题
- 重温数据结构-栈的应用:进制转换,括号匹配检测,行编辑,迷宫求解,求表达式的值