poj 3984 迷宫问题
来源:互联网 发布:上海大学网络教学中心 编辑:程序博客网 时间:2024/05/31 19:00
做这道题其实我是想看看打印路径的方法,挺水的,看了网上别人的代码,打印路径基本上都是保存一下父节点,然后
打印出它的坐标,我写的是递归一下,从后面向前找到起点,找的过程有点不一样,之前没保存,而是继续上下左右的
找,估计是因为这个时间有点多,虽然在这道题上看不出来差别。。。无意中看到了盈神的博客,我做这道题将近比她晚了一年。。。
代码:
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue> int dist[10][10];int visit[10][10];int gra[10][10];const int dx[4] = {-1,1,0,0};const int dy[4] = {0,0,-1,1};using namespace std;struct node{int x,y;};void bfs(int x,int y){int i;queue<node>que;memset(visit,0,sizeof(visit));memset(dist,0,sizeof(dist));node n1;n1.x = x;n1.y = y;dist[x][y] = 0;que.push(n1);visit[x][y] = 1;while(!que.empty()){node n1 = que.front();que.pop();if((n1.x == 5) && (n1.y == 5)){//printf("%d\n",dist[n1.x][n1.y]);return ;}for(i=0; i<4; i++){int xx = n1.x + dx[i];int yy = n1.y + dy[i];if(!visit[xx][yy] && (gra[xx][yy] == 0) && (xx >= 1) && (xx <= 5) &&(yy >= 1) && (yy <= 5)){visit[xx][yy] = 1;dist[xx][yy] = dist[n1.x][n1.y] + 1;node n2;n2.x = xx,n2.y = yy;que.push(n2);}}}}void print_path(node n1,node n2){int i;if((n2.x == n1.x) && (n1.y == n2.y))return;for(i=0; i<4; i++){int xx = n2.x + dx[i];int yy = n2.y + dy[i];if((dist[n2.x][n2.y] == dist[xx][yy] + 1) && visit[xx][yy]){node n3;n3.x =xx,n3.y =yy;print_path(n1,n3);printf("(%d, %d)\n",n3.x-1,n3.y-1);}}return ;}int main(){int i,j;for(i=1; i<=5; i++)for(j=1; j<=5; j++)scanf("%d",&gra[i][j]);bfs(1,1);node n1,n2;n1.x = 1, n1.y = 1;n2.x = 5, n2.y = 5;print_path(n1,n2);printf("(4, 4)");return 0;}
0 0
- poj 3984 迷宫问题
- poj 3984 迷宫问题
- POJ-3984-迷宫问题
- Poj 3984 迷宫问题
- 迷宫问题 poj 3984
- poj 3984迷宫问题
- poj 3984 迷宫问题
- POJ-3984-迷宫问题
- poj 3984- 迷宫问题
- POJ 3984 迷宫问题
- poj 3984 迷宫问题
- poj 3984:迷宫问题
- POJ-3984-迷宫问题
- POJ 3984 迷宫问题
- poj 3984迷宫问题
- POJ 3984 迷宫问题
- POJ 3984 迷宫问题
- poj 3984 迷宫问题
- Android核心基础-7.Android 网络通信-3.SmartImageView请求网络图片
- Triangle
- ifram跳转
- day初学补充
- UIButton,UITextField
- poj 3984 迷宫问题
- 然而Foreach并不是这样的
- POJ1087(网络流,二分图匹配)
- 测试一棵二叉树是否为完全二叉树
- 安全驾驶-注意交通提示牌(二十)
- win7下安装sql2000的创建表
- AVAudioPlayer 播放本地音乐
- Yii代码目录结构
- post 数据 乱码 中文