BFS 走迷宫
来源:互联网 发布:华为java上机编程题 编辑:程序博客网 时间:2024/05/21 17:27
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <math.h>
#include <string>
#include <vector>
int flag[MAX][MAX];
const int dx[4]={1,0,-1,0}; //控制方向
const int dy[4]={0,1,0,-1};
struct aaa
{
int x;
int y;
int step;
}que[MAX];
void bfs(aaa que[],int n)
{
int now=1; //目前所在的点
int book=2; //即将进入点在队列的位置
int will_x;
int will_y;
int newflag=1;
while(now<book)
{
for(int i=0;i<4;i++)
{
will_x=que[now].x+dx[i];
will_y=que[now].y+dy[i];
if(will_x>=1&&will_x<=n&&will_y>=1&&will_y<=n) //在边界内
{
//cout<<1<<endl;
if(MAP[will_x][will_y]!=0&&flag[will_x][will_y]==0) //未行过的点 且不是陷阱
{
flag[will_x][will_y]=1;
que[book].x=will_x; //入队列
que[book].y=will_y;
que[book].step=que[now].step+1;
book++;
if(will_x==n&&will_y==n)
{
newflag=2;
break;
}
}
}
}
if(newflag==2) break;
now++;
}
for(int i=1;i<book;i++) //
{
cout<<que[i].x<<" "<<que[i].y<<" "<<que[i].step<<endl;
}
}
int main()
{
int n;
while(cin>>n)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) cin>>MAP[i][j];
//====================================================================
MAP[1][1]=9;//初始化
MAP[n][n]=9;
que[1].x=1;
que[1].y=1;
que[1].step=0;
flag[1][1]=1;
//====================================================================
for(int i=1;i<=n;i++)//打印地图
{
for(int j=1;j<=n;j++) cout<<MAP[i][j]<<" ";
cout<<endl;
}
cout<<endl;
//=================================================================
bfs(que,n);
}
}
#include <algorithm>
#include <iostream>
#include <math.h>
#include <string>
#include <vector>
using namespace std;
#define MAX 101
int flag[MAX][MAX];
const int dx[4]={1,0,-1,0}; //控制方向
const int dy[4]={0,1,0,-1};
struct aaa
{
int x;
int y;
int step;
}que[MAX];
void bfs(aaa que[],int n)
{
int now=1; //目前所在的点
int book=2; //即将进入点在队列的位置
int will_x;
int will_y;
int newflag=1;
while(now<book)
{
for(int i=0;i<4;i++)
{
will_x=que[now].x+dx[i];
will_y=que[now].y+dy[i];
if(will_x>=1&&will_x<=n&&will_y>=1&&will_y<=n) //在边界内
{
//cout<<1<<endl;
if(MAP[will_x][will_y]!=0&&flag[will_x][will_y]==0) //未行过的点 且不是陷阱
{
flag[will_x][will_y]=1;
que[book].x=will_x; //入队列
que[book].y=will_y;
que[book].step=que[now].step+1;
book++;
if(will_x==n&&will_y==n)
{
newflag=2;
break;
}
}
}
}
if(newflag==2) break;
now++;
}
for(int i=1;i<book;i++) //
{
cout<<que[i].x<<" "<<que[i].y<<" "<<que[i].step<<endl;
}
}
int main()
{
int n;
while(cin>>n)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) cin>>MAP[i][j];
//====================================================================
MAP[1][1]=9;//初始化
MAP[n][n]=9;
que[1].x=1;
que[1].y=1;
que[1].step=0;
flag[1][1]=1;
//====================================================================
for(int i=1;i<=n;i++)//打印地图
{
for(int j=1;j<=n;j++) cout<<MAP[i][j]<<" ";
cout<<endl;
}
cout<<endl;
//=================================================================
bfs(que,n);
}
}
0 0
- BFS走迷宫
- 走迷宫 bfs
- BFS 走迷宫代码
- BFS 走迷宫
- BFS走迷宫
- 走迷宫最短步数--BFS
- bfs走迷宫
- 3752:走迷宫 bfs dfs
- HDU 3912 BFS走迷宫
- [OpenJudge-NOI]走迷宫 Bfs
- Java - Nuc - 走迷宫 ( bfs )
- BFS的应用-走迷宫
- ACM:图的BFS,走迷宫
- 走迷宫 sdut bfs 深度搜索
- hud 1010 走迷宫 搜索—bfs
- BFS 走迷宫 与STL的低效
- POJ 3984 BFS走迷宫问题
- 华为OJ 走迷宫 Java BFS
- 红外解码数码管显示
- AS断点调试与高级调试(二)
- 习题3-3 数数字
- 下拉菜单思路及实现
- 《peopleware》摘抄(二)
- BFS 走迷宫
- Android UI 开发
- 【Leetcode题解】258.Add Digits
- 【Android develop】【学习笔记005】打开另一个activity
- 258. Add Digits
- cocos2d
- poj 2524 Ubiquitous Religions
- (转)Android RecyclerView 使用完全解析 体验艺术般的控件
- CFree “undefined reference to `__dyn_tls_init_callback'” 的解决方法