zoukankan      html  css  js  c++  java
  • G.走出迷宫

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 32768K,其他语言65536K
    64bit IO Format: %lld

    题目描述

    小明现在在玩一个游戏,游戏来到了教学关卡,迷宫是一个N*M的矩阵。
    小明的起点在地图中用“S”来表示,终点用“E”来表示,障碍物用“#”来表示,空地用“.”来表示。
    障碍物不能通过。小明如果现在在点(x,y)处,那么下一步只能走到相邻的四个格子中的某一个:(x+1,y),(x-1,y),(x,y+1),(x,y-1);
    小明想要知道,现在他能否从起点走到终点。

    输入描述:

    本题包含多组数据。
    每组数据先输入两个数字N,M
    接下来N行,每行M个字符,表示地图的状态。
    数据范围:
    2<=N,M<=500
    保证有一个起点S,同时保证有一个终点E.

    输出描述:

    每组数据输出一行,如果小明能够从起点走到终点,那么输出Yes,否则输出No
    示例1

    输入

    3 3
    S..
    ..E
    ...
    3 3
    S##
    ###
    ##E

    输出

    Yes
    No

    分析:简单BFS。

    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    char map[600][600];
    char s[100];
    bool vis[600][600];
    struct Node{
        int x,y;
    };
    int d[4][2]={0,1,0,-1,1,0,-1,0};
    int main()
    {
        int N,M;
        while(scanf("%d%d",&N,&M)!=EOF)
        {
            Node S;
            gets(s);
            for(int i=1;i<=N;i++)
            {
                for(int j=1;j<=M;j++)
                {
                    scanf("%c",&map[i][j]);
                    if(map[i][j]=='S') {S.x=i;S.y=j;}
                }
                gets(s);
            }
            int flag=0;
            memset(vis,0,sizeof(vis));
            queue<Node> q;
            q.push(S);
            while(!q.empty())
            {
                Node temp=q.front();
                q.pop();
                if(map[temp.x][temp.y]=='E')
                {flag=1;break;}
                vis[temp.x][temp.y]=1;
                for(int i=0;i<4;i++)
                {
                    Node R;
                    R.x=temp.x+d[i][0];R.y=temp.y+d[i][1];
                    if(R.x<1||R.y<1||R.x>N||R.y>M) continue;
                    if(!vis[R.x][R.y]&&map[R.x][R.y]!='#')
                    {
                        vis[R.x][R.y]=1;
                        q.push(R);
                    }
                }
            }
            if(flag) printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
    View Code


    作者:ACRykl —— O ever youthful,O ever weeping!

    出处:http://www.cnblogs.com/ACRykl/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    New version of VS2005 extensions for SharePoint 3.0
    QuickPart : 用户控件包装器 for SharePoint Server 2007
    随想
    发布 SharePoint Server 2007 Starter Page
    如何在SharePoint Server中整合其他应用系统?
    Office SharePoint Server 2007 中文180天评估版到货!
    RMS 1.0 SP2
    SharePoint Server 2007 Web内容管理中的几个关键概念
    如何为已存在的SharePoint站点启用SSL
    Some update information about Office 2007
  • 原文地址:https://www.cnblogs.com/ACRykl/p/8068194.html
Copyright © 2011-2022 走看看