迷宫广度搜索模版
来源:互联网 发布:idle python gui 编辑:程序博客网 时间:2024/05/18 09:59
#include<iostream>
#include<cstdio>
#include<queue>
#define M 6
#define N 6
using namespace std;
int BFS(int sx, int sy, int gx, int gy);
int map[M][N] = { //地图
1, 1, 1, 1, 1, 1,
1, 0, 0, 1, 0, 1,
1, 0, 0, 1, 0, 1,
1, 1, 0, 0, 0, 1,
1, 0, 0, 0, 1, 1,
1, 1, 1, 1, 1, 1
};
int dir[M][N];
int c[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; //定义的四个方向
int sx, sy, gx, gy;
struct A{
int x;
int y;
int b;
};
int main(){
scanf("%d%d%d%d", &sx, &sy, &gx, &gy); //起点终点
BFS(sx, sy, gx, gy);
return 0;
}
int BFS(int sx, int sy, int gx, int gy){
int i, j;
int flag = 0;
A tmp, t;
t.x = sx;
t.y = sy;
t.b = 0;
queue<struct A> q;
q.push(t);
while(!q.empty()){
t = q.front();
q.pop();
dir[t.x][t.y] = t.b + 1;
if(t.x == gx && t.y == gy){
flag = 1;
break;
}
for(i = 0; i < 4; i++){
tmp.x = t.x + c[i][0];
tmp.y = t.y + c[i][1];
tmp.b = t.b + 1;
if(!dir[tmp.x][tmp.y] && map[tmp.x][tmp.y] != 1 && t.x < 6 && t.x > 0 && t.y < 6 && t.y > 0){ //dir是标记
q.push(tmp);
dir[tmp.x][tmp.y] = tmp.b + 1;
}
}
}
if(flag == 1){
printf("%d\n", dir[t.x][t.y]);
}
}
输入
1 1 4 3
输出
6
#include<cstdio>
#include<queue>
#define M 6
#define N 6
using namespace std;
int BFS(int sx, int sy, int gx, int gy);
int map[M][N] = { //地图
1, 1, 1, 1, 1, 1,
1, 0, 0, 1, 0, 1,
1, 0, 0, 1, 0, 1,
1, 1, 0, 0, 0, 1,
1, 0, 0, 0, 1, 1,
1, 1, 1, 1, 1, 1
};
int dir[M][N];
int c[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; //定义的四个方向
int sx, sy, gx, gy;
struct A{
int x;
int y;
int b;
};
int main(){
scanf("%d%d%d%d", &sx, &sy, &gx, &gy); //起点终点
BFS(sx, sy, gx, gy);
return 0;
}
int BFS(int sx, int sy, int gx, int gy){
int i, j;
int flag = 0;
A tmp, t;
t.x = sx;
t.y = sy;
t.b = 0;
queue<struct A> q;
q.push(t);
while(!q.empty()){
t = q.front();
q.pop();
dir[t.x][t.y] = t.b + 1;
if(t.x == gx && t.y == gy){
flag = 1;
break;
}
for(i = 0; i < 4; i++){
tmp.x = t.x + c[i][0];
tmp.y = t.y + c[i][1];
tmp.b = t.b + 1;
if(!dir[tmp.x][tmp.y] && map[tmp.x][tmp.y] != 1 && t.x < 6 && t.x > 0 && t.y < 6 && t.y > 0){ //dir是标记
q.push(tmp);
dir[tmp.x][tmp.y] = tmp.b + 1;
}
}
}
if(flag == 1){
printf("%d\n", dir[t.x][t.y]);
}
}
输入
1 1 4 3
输出
6
0 0
- 迷宫广度搜索模版
- 迷宫之广度优先搜索
- 迷宫问题-广度优先搜索
- 迷宫问题-广度优先搜索
- 广度优先搜索:迷宫问题
- BFS广度搜索(迷宫问题)
- 搜索_广度优先_小迷宫
- 队列:广度优先搜索求解迷宫
- Matlab 广度优先搜索求解迷宫问题
- 广度优先搜索求解迷宫问题
- 广度优先搜索求解迷宫问题
- 广度优先搜索[再解迷宫]
- 用广度优先搜索解迷宫问题
- 迷宫问题(广度优先搜索BFS)
- HDU 1728 逃离迷宫(广度搜索)
- POJ 3984 迷宫问题(广度搜索)
- 广度优先搜索BFS(迷宫问题)
- 迷宫——广度优先搜索
- [NOIP2005]采药 T3
- Linux 压缩和解压 命令 小结
- 18 数据库
- DFT做频谱分析再理解
- 友盟用户反馈集成中遇到的问题
- 迷宫广度搜索模版
- 使用 Vagrant 打造跨平台开发环境
- 链表
- AndroidAnnotations在Eclipse中配置
- Assets目录下的特殊文件夹名称
- 字节对齐小谈
- mybaties报错:查询数据时,没有给无参构造报错
- K-Means算法带界面程序演示
- JAVA随堂笔记课【六】:数据类型,享元模式