迷宫问题(bfs)+结构体
来源:互联网 发布:知乎日报 离线下载 编辑:程序博客网 时间:2024/06/03 19:02
定义一个二维数组:
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
一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。
Output
左上角到右下角的最短路径,格式如样例所示。
Sample Input
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
Sample Output
(0, 0)
(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)
#include <stdio.h>#include <stdlib.h>#include <string.h>int ma[6][6];//存储图int v[6][6];//标记数组int pre[121];//记录每一个结构体的前一个点struct node{ int x, y;//横纵坐标}que[36], q, p;int xx[] = {0, 0, 1, -1};//横坐标的变化,上下左右四个方向int yy[] = {1, -1, 0, 0};//纵坐标void show(int a){ int b = pre[a];//指向前一个点 if(b==0) { printf("(0, 0)\n"); printf("(%d, %d)\n", que[a].x, que[a].y); return ; } else show(b); printf("(%d, %d)\n", que[a].x, que[a].y);}void bfs(int a, int b){ int front = 0,rear = 0; p.x = a; p.y = b; v[a][b] = 1; pre[0] = -1; que[rear++] = p; while(front<rear) { q = que[front]; if(q.x==4&&q.y==4)//走到终点 { show(front); return ; } for(int i=0;i<4;i++) { p.x = q.x + xx[i]; p.y = q.y + yy[i]; if(p.x<0||p.x>=5||p.y<0||p.y>=5||v[p.x][p.y]==1||ma[p.x][p.y]==1)//不符合条件 continue; pre[rear] = front; que[rear++] = p; v[p.x][p.y] = 1; } front++; } return ;}int main(){ for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { scanf("%d", &ma[i][j]); } } memset(v, 0, sizeof(v)); bfs(0, 0); return 0;}
阅读全文
0 0
- 迷宫问题(bfs)+结构体
- 迷宫问题(BFS)
- 迷宫问题(bfs)
- 迷宫问题(BFS)
- SDJZUOJ迷宫问题(BFS)
- sdjzu1102 迷宫问题(BFS)
- poj3984 迷宫问题(BFS)
- POJ3984 迷宫问题(BFS)
- poj3984-迷宫问题(BFS)
- SDJZUOJ迷宫问题(BFS)
- C++迷宫问题(BFS)
- POJ3984 迷宫问题(BFS)
- poj3984(bfs迷宫问题)
- 7084:迷宫问题(bfs)
- poj3984 迷宫问题(图-BFS)
- POJ 3984 迷宫问题 (BFS,水题)
- poj 3984 -- 迷宫问题 (bfs)
- 模拟求解迷宫问题(DFS+BFS)
- Java与js的互调
- 20170807 JAVA用String类判别身份证号、手机号和电话号码
- C++中this指针的理解和用法
- hdu 3397
- java初学
- 迷宫问题(bfs)+结构体
- 重建二叉树
- 四种读写文件的方式:系统调用(open/read/write),C语言(fopen,fgets, fputs),C++(ifstream, ofstream getline,)泛型算法
- Java使用Hutool实现AES、DES加密解密
- selinux基础
- 并发服务器实现原理
- ACM训练日记—8月7日
- Mark-20170807-k8s-假装终于成功安装 dashboard
- Apache Spark 2.2.0 官方文档中文版(翻译完成 98%. 除 MLib 外) | ApacheCN