您的位置:首页 > 理论基础 > 数据结构算法

数据结构-->迷宫-->递归求解

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");

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: