问题 1682: 算法3-3:迷宫(DFS找路径)(蓝桥)
2019-04-11 20:01
218 查看
http://www.dotcpp.com/oj/problem1682.html
[code]#include<bits/stdc++.h> using namespace std; int vis[12][12]; char mp[12][12]; int dir[4][2]={0,1,1,0,0,-1,-1,0}; int sx,sy,ex,ey; bool check(int x ,int y) { if(x>=10 ||x<0 || y<0 || y>=10|| vis[x][y] || mp[x][y] == '#') return false; return true; } bool dfs(int x ,int y) { if(mp[x][y] == 'E') return true; vis[x][y]=1; mp[x][y]= '*'; for(int i=0;i<4;++i) { int nx = x+dir[i][0]; int ny = y+dir[i][1]; // mp[x][y] = '!'; if(check(nx,ny)) { if(dfs(nx,ny)) { return true; } //else if(vis[nx][ny]) mp[nx][ny]= '!'; } } mp[x][y]='!'; vis[x][y]=0; return false; } int main() { memset(vis,0,sizeof(vis)); for(int i=0;i<10;++i) { for(int j=0;j<10;++j) { scanf("%c",&mp[i][j]);//注意 不能用cin>> mp[i],scanf("%s") 不能识别空格! if(mp[i][j] == 'S') { sx=i; sy=j; } if(mp[i][j] == 'E') { ex=i; ey=j; } } getchar();//吃掉 回车键 } //vis[sx][sy] = 1; if(dfs(sx,sy)) { mp[ex][ey]='*'; for(int i=0;i<10;++i) { for(int j=0;j<10;++j) { printf("%c",mp[i][j]); } printf("\n"); } } return 0; }
相关文章推荐
- poj 迷宫问题(路径记录)(DFS,BFS)
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
- poj 迷宫问题(路径记录)(DFS,BFS)
- poj 迷宫问题(路径记录)(DFS,BFS)
- poj 迷宫问题(路径记录)(DFS,BFS)
- DFS走迷宫问题(非最短路径)
- poj3984(DFS写法) 迷宫路径问题
- poj 迷宫问题(路径记录)(DFS,BFS)
- 迷宫问题一 找到迷宫的一条路径(DFS+回溯)
- poj 迷宫问题(路径记录)(DFS,BFS)
- DFS算法Java实现寻路问题,回溯法输出全部路径
- poj 迷宫问题(路径记录)(DFS,BFS)
- poj 3984 迷宫问题【dfs+路径输出】
- poj 3984 迷宫问题 dfs 求迷宫路径
- poj 迷宫问题(路径记录)(DFS,BFS)
- poj 3984 迷宫问题 dfs 求迷宫路径
- 经典算法<一>迷宫问题 1.单条路径 DFS求解 C++实现
- poj 迷宫问题(路径记录)(DFS,BFS)
- poj 3984 迷宫问题 dfs 求迷宫路径
- 数据结构与算法学习之路:迷宫问题——回溯思想找出所有路径