走迷宫
来源:互联网 发布:朝鲜的未来 知乎 编辑:程序博客网 时间:2024/05/01 18:01
#include<iostream>#include<stdio.h>#include<string>#include<cstring>using namespace std;const int Max = 101;bool vis[Max][Max];int fa[Max][Max],q[Max*Max],dist[Max][Max],last_dir[Max][Max],mat[Max][Max];int n,m,dx[] = {-1,0,1,0},dy[] = {0,1,0,-1};char name[] = {'U','D','L','R'};void bfs(int x,int y){int front = 0,rear = 0,d,u;u = x*m + y;vis[x][y] = 1;fa[x][y] = u;dist[x][y] = 0;q[rear++] = u;while(front < rear){u = q[front++];x=u/m;y=u%m;cout<<"x= "<<x<<" "<<"y= "<<y<<endl;for(d = 0; d < 4; d ++){int nx = x+dx[d],ny = y + dy[d];cout<<"nx= "<<nx<<"ny= "<<ny<<endl;if(nx >= 0 && nx <n && ny >= 0 && ny < m && !mat[nx][ny] && !vis[nx][ny]){cout<<"YYY"<<endl;int v = nx*m+ny;q[rear++]= v; //没办法把图中的节点装进队列,就用v节点记录,放进队列,需要时还原。 vis[nx][ny] = 1;fa[nx][ny] = u;dist[nx][ny] = dist[x][y] + 1;cout<<dist[nx][ny]<<endl;last_dir[nx][ny] = d;}}}}void print_path(int x,int y){int fx = fa[x][y]/m;int fy = fa[x][y]%m;if(fx != x ||fy != y){print_path(fx,fy);putchar(name[last_dir[x][y]]);}}int main(){ //第一个错误就是n和m重定义。造成bfs里面有了除零错误。。。。。 while(cin>>n>>m) //输入行数和列数 {int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2; //输入其实位置和终止位置 for(int i = 0;i != n; i ++){for(int j = 0;j != m ; j ++){cin>>mat[i][j]; //由于是int型输入,所以一定要保证两个数字之间有空格 }}memset(vis,0,sizeof(vis));memset(dist,0,sizeof(dist)); bfs(x1,y1); cout<<dist[x2][y2]<<endl; print_path(x2,y2);}return 0;}
0 0
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 走迷宫
- 【iOS开发系列】scrollView中的directionalLockEnabled
- maven 加入json-lib.jar 报错 Missing artifact net.sf.json-lib:json-lib:jar:2.4:compile
- Java关于集合(list,set,map)的遍历与增强for循环的使用
- 2.第三单元任务一实训:有一个数列:8、4、2、1、23、344、12,编辑实现以下功能。循环输出数列的值;求数列中所有数值的和;猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含该数。
- 笔试宝典上关于字符串复制的问题
- 走迷宫
- 淘宝的数据解决方案:datax - DataX产品说明
- FLATRO OPENCART 自适应多用途主题模板 ABC-0054
- socket原理
- sql如何查询主键
- Mathematica 清除变量的值
- ERROR 1194 (HY000): Table 't1' is marked as crashed and should be repaired
- MVC5使用
- hdu 5294 Tricks Device 2015 Multi-University Training Contest 1