题目
如下有8x8的迷宫图
其中,O表示通路方块,X表示障碍方块。假设入口位置为(0,0),出口为右下角方块位置(7,7)
设计一个程序求指定入口到出口的一条迷宫路径
思路
采用深度优先遍历方法
代码
#include <stdio.h>
#define MaxN 10
int n = 8;
char Maze[MaxN][MaxN]=
{
{'O','X','X','X','X','X','X','X'},
{'O','O','O','O','O','X','X','X'},
{'X','O','X','X','O','O','O','X'},
{'X','O','X','X','O','X','X','O'},
{'X','O','X','X','X','X','X','X'},
{'X','O','X','X','O','O','O','X'},
{'X','O','O','O','O','X','O','O'},
{'X','X','X','X','X','X','X','O'}
};
int H[4]={0,1,0,-1};
int V[4]={-1,0,1,0};
void disppath()
{
for(int i = 0; i < n; i++)
{
printf(" ");
for(int j = 0; j < n; j++)
{
printf("%c",Maze[i][j]);
}
printf("\n");
}
}
void DFS(int x,int y)
{
if (x==n-1&&y==n-1) {
Maze[n-1][n-1]=' ';
disppath();
return;
}
else
{
for(int k = 0; k < 4; k++)
{
if (x>=0&&y>=0&&x<n&&y<n&&Maze[x][y]=='O')
{
Maze[x][y]=' ';
DFS(x+V[k],y+H[k]);
Maze[x][y]='O';
}
}
}
}
int main()
{
int x=0,y=0;
printf("one maze path:\n");
DFS(x,y);
return 0;
}
以下为我的微信公众号:技术经理的成长
会不定期进行更新,欢迎关注