创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
小编这次要给大家分享的是C语言如何实现走迷宫,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
描述
给一张个迷宫,问能否从起点走到终点,只能往上下左右走,不能斜着走
输入
多组测试数据,每组第一行两个正整数,分别为n和m
表示n这个迷宫有n行m列(0
接着是n行m列,
'#'表示路
‘*'表示墙
‘S'表示起点
‘T'表示终点
输出
每组测试数据输出一个结果,如果能从S走到T,输出“YES”,否则输出“NO”
输入样例:
2 2
S*
#T
3 3
S*#
#T
##
输出样例:
YES
NO
有两种方法可以解决这个问题
第一种深度优先搜索:站在入口,考虑自己下一步可以走哪里,走到下一个位置后,再考虑下一步怎么走,一直走下去,直到没有路,然后再返回最近的一个岔路口,选其它任一条没试过的路,如果不能走,再尝试其他的路,直到这个岔路口的路全部试完,再回到上一个路口,看是否能走到出口,相当于一条路走到黑
#includeusing namespace std; char a[20][20]; //存储迷宫字符数组 int flag,m,n; int sdep_x[4]={-1,1,0,0},sdep_y[4]={0,0,-1,1};//控制上下左右方向 int vis[20][20]; //标记走过的路 void dfs(int x,int y) { vis[x][y]=1; //代表被标记过了 if(a[x][y]=='T') //找到出口 { flag=1; return; } for(int i=0;i<4;i++) //搜索路径 { int h=x+sdep_x[i]; int l=y+sdep_y[i]; if(a[h][l]!='*'&&!vis[h][l]&&h>=0&&h =0&&l >n>>m) { memset(vis,0,sizeof(vis));//初始化数组 flag=0; int f,g; for(int i=0;i >a[i][j]; for(int i=0;i
文章名称:C语言如何实现走迷宫-创新互联
浏览地址:http://chengdu.cdxwcx.cn/article/iehjp.html