关闭

poj 迷宫问题(简单题)

标签: POJBFS
1737人阅读 评论(0) 收藏 举报
分类:
迷宫问题
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 10318   Accepted: 6124

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

一个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)

思路:
基础题,弄懂队列原理就ok。

代码:
#include<iostream>
using namespace std;
int map[5][5];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,-1,1};
int front=0,rear=1;
struct node{
    int x,y,pre;
}q[100];

void print(int i)
{
    if(q[i].pre!=-1)
    {
        print(q[i].pre);
        cout<<"("<<q[i].x<<", "<<q[i].y<<")"<<endl;
    }
}
void bfs(int x1,int y1)
{
    q[front].x=x1;
    q[front].y=y1;
    q[front].pre=-1;
    while(front<rear)
    {
        for(int i=0;i<4;i++)
        {
            int a=dx[i]+q[front].x;
            int b=dy[i]+q[front].y;
            if(a<0||a>=5||b<0||b>=5||map[a][b])
                continue;
            else
            {
                map[a][b]=1; 
                q[rear].x=a;
                q[rear].y=b;
                q[rear].pre=front;
                rear++; 
            }
            if(a==4&&b==4) print(front);
        }
        front++;
    }
}

int main()
{
    int i,j;
    for(i=0;i<5;i++)
        for(j=0;j<5;j++)
            cin>>map[i][j];
    cout<<"(0, 0)"<<endl;
    bfs(0, 0);
    cout<<"(4, 4)"<<endl;
    return 0;
}


0
0
查看评论

POJ3984 迷宫问题【BFS】

POJ 3984 题目: 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, }; 它表示一个迷宫,...
  • huanghanqian
  • huanghanqian
  • 2016-05-26 14:20
  • 3119

POJ 3984 迷宫问题

迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15397   Accepted: 9144 De...
  • Mr__Kid
  • Mr__Kid
  • 2017-07-03 12:33
  • 211

POJ3984 迷宫问题【BFS】

题目大意: 用一个5*5的二维数组表示迷宫,输出左上角到右下角的最短路径。 思路: 用BFS求最短路径。用pre[]来记录每个状态之前的状态,然后递归输出路径。
  • u011676797
  • u011676797
  • 2015-05-18 13:03
  • 1569

迷宫问题 poj

#include #include #include #include #include using namespace std; struct Node { int x,y; }node[30]; int father[30],map[5][5],vis[5][5]; int xx[4...
  • chaoyueziji123
  • chaoyueziji123
  • 2015-02-26 13:46
  • 428

poj3984 迷宫问题

最近正在学习BFS和DFS,这是ACM很重要也很常用的yige
  • wangxiaoyan381
  • wangxiaoyan381
  • 2014-07-24 16:22
  • 600

POJ-3984-迷宫问题

POJ-3984-迷宫问题 http://poj.org/problem?id=3984 用BFS求最短路劲,记录每一个状态之前的状态,输出路劲即可 #include #include #include int map[5][5]; int visit[5][5]; int pre[100];...
  • Cambridgeacm
  • Cambridgeacm
  • 2012-07-12 17:10
  • 6817

POJ3984 迷宫问题【BFS】

迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 25795   Accepted: 15019 Description 定义一个二维数组: int maze[5][5] = ...
  • tigerisland45
  • tigerisland45
  • 2016-07-11 08:15
  • 2307

POJ--3984--迷宫问题

迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11806   Accepted: 7072 Desc...
  • gui951753
  • gui951753
  • 2015-09-23 22:50
  • 243

POJ 3984 迷宫问题(BFS)

(题目略改),poj那题数据太弱!!! 问题描述: 定义一个二维数组 N*M (其中 2 int maze[5][5]={ 0, 1, 0, 0, 0,                   0...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2016-04-15 22:24
  • 746

迷宫问题

/*n行m列的迷宫,每个单元格要么是空地要么是障碍物,任务是帮助找到一条从迷宫的起点到小红的位置的最短路径,注意 障碍物是不能走的,也不能走到迷宫之外。 0表示空地,1标注障碍物 */ #include using namespace std; int n,m,p,q,mins=999999; i...
  • acm_JL
  • acm_JL
  • 2016-03-11 02:30
  • 898
    个人资料
    • 访问:39276次
    • 积分:1033
    • 等级:
    • 排名:千里之外
    • 原创:64篇
    • 转载:9篇
    • 译文:0篇
    • 评论:5条
    最新评论