• 迷宫问题


    迷宫问题

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1255


    时间限制: 1000 ms         内存限制: 65536 KB

    【题目描述】

    定义一个二维数组:

    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表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

     

    【输入】

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

    【输出样例】

    (0, 0)
    (1, 0)
    (2, 0)
    (2, 1)
    (2, 2)
    (2, 3)
    (2, 4)
    (3, 4)
    (4, 4)
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    queue <int> Q;
    int a[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
    int mp[6][6];
    int j[6][6][2];
    int bfs()
    {
        int flag=0;
        while(!Q.empty())
        {
            if(flag)return 0;
            int x=Q.front();Q.pop();
            int y=Q.front();Q.pop();
            for(int i=0;i<4;i++)
            {
                int x1=x+a[i][0],yy1=y+a[i][1];
                if(x1>0&&x1<6&&yy1>0&&yy1<6&&!mp[x1][yy1])
                {
                    mp[x1][yy1]=mp[x][y]+1;
                    j[x1][yy1][0]=x;j[x1][yy1][1]=y;
                    if(x1==5&&yy1==5){
                        flag=1;break;
                    }
                    Q.push(x1);Q.push(yy1);
                }
            }
        }
    }
    int show(int x,int y)
    {
        if(x==1&&y==1)return 0;
        show(j[x][y][0],j[x][y][1]);
        printf("(%d, %d)
    ",j[x][y][0]-1,j[x][y][1]-1);
            
    }
    int main()
    {
        for(int i=1;i<6;i++)
            for(int j=1;j<6;j++)
                {
                    cin>>mp[i][j];
                    if(mp[i][j])mp[i][j]=-1;
                }
        Q.push(1);Q.push(1);
        mp[1][1]=1;
        bfs();
        
        show(5,5);
        printf("(4, 4)
    ");
    }
  • 相关阅读:
    【转】VB 技巧一
    VB中的trim()函数
    转:vb实现老板键功能
    VB为自己的程序设定消息(可接收处理)
    RegisterHotKey的具体使用方法
    GetPrivateProfileString
    在VB语言中,DOEVENTS的具体的用法和含义
    VB中的ADO数据对象编程
    jquery操作select下拉列表框
    jQuery对Select的操作集合
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/7631935.html
Copyright © 2020-2023  润新知