POJ 3984 迷宫问题 广搜记录路径
来源:互联网 发布:php submit提交 编辑:程序博客网 时间:2024/05/21 07:25
Description
int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
Input
Output
Sample Input
0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0
Sample Output
(0, 0)(1, 0)(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)(3, 4)(4, 4)
思路:第一次接触记录路径问题,还是不太熟练怎么记录路径;除了记录路径其余的用广搜就很简单了也很好理解;
这里我在结构体里多定义了一个存储他的上一个父节点;然后用递归回溯父节点,输出即可,令第一个的父节点为-1;
#include<stdio.h>#include<string.h>int next[4][2]= {1,0,-1,0,0,1,0,-1}; int mase[6][6];struct node{ int x; int y; int s;}q[100];void print(int num){ if(num!=-1) { print(q[num].s); printf("(%d, %d)\n",q[num].x,q[num].y); }}int main(){ int i,j; int head,tail; for(i=0;i<5;i++) for(j=0;j<5;j++) scanf("%d",&mase[i][j]); head=0; tail=0; q[tail].x=0; q[tail].y=0; q[tail].s=-1; tail++; int flag=0; while(head<tail) { for(i=0;i<4;i++) { int tx=q[head].x+next[i][0]; int ty=q[head].y+next[i][1]; if(tx>=0&&tx<5&&ty>=0&&ty<5&&mase[tx][ty]==0) { mase[tx][ty]=1; q[tail].x=tx; q[tail].y=ty; q[tail].s=head; if(tx==4&&ty==4) { print(q[tail].s);//当到达4,4时直接找上一个父节点,这个一个4,4就无法输出,所以要自己输出; printf("(4, 4)\n"); flag=1; break; } tail++; } } if(flag) break; head++;}return 0; }
- POJ 3984 迷宫问题 广搜记录路径
- 迷宫问题 (广搜+记录路径)
- 迷宫问题 (广搜记录路径(数组))
- 广搜记录路径——迷宫问题
- 迷宫问题 (广搜并记录路径)
- POJ 3984----迷宫问题(广搜)
- poj 3984 迷宫问题(广搜)
- POJ 3984 迷宫问题 广搜迷宫解法
- POJ 3984:迷宫问题(BFS+路径记录)
- POJ 3984 迷宫问题 (路径记录)
- POJ 3984 迷宫问题 BFS 记录路径
- POJ 3984--迷宫问题【BFS && 记录路径】
- poj 3984 迷宫问题 【bfs + 路径记录】
- POJ 3984迷宫问题(记录路径)
- POJ 3984 迷宫问题 BFS+记录路径
- POJ 3984 迷宫问题 【BFS+路径记录】
- poj 3984 迷宫问题 BFS+路径记录
- 广搜 基础 走迷宫 记录路径
- 未来的书
- 第三章 标记位置mark,切换shell
- [链表]单链表
- 科技的灵魂——创新
- 逆序输出字符串
- POJ 3984 迷宫问题 广搜记录路径
- C#版本的学生成绩管理系统
- [FT][8]NOIP 2010 引水入城
- 科技创新
- 触发器
- 一步一步开始FPGA逻辑设计-写作计划
- Java io --- 流(Stream)
- 程序员的自我修养
- 允许远程用户登录访问mysql的方法