• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            poj2251

            Dungeon Master

            Time Limit: 1000MS Memory Limit: 65536K
            Total Submissions: 10668 Accepted: 4111

            Description

            You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not be filled with rock. It takes one minute to move one unit north, south, east, west, up or down. You cannot move diagonally and the maze is surrounded by solid rock on all sides.

            Is an escape possible? If yes, how long will it take?

            Input

            The input consists of a number of dungeons. Each dungeon description starts with a line containing three integers L, R and C (all limited to 30 in size).
            L is the number of levels making up the dungeon.
            R and C are the number of rows and columns making up the plan of each level.
            Then there will follow L blocks of R lines each containing C characters. Each character describes one cell of the dungeon. A cell full of rock is indicated by a '#' and empty cells are represented by a '.'. Your starting position is indicated by 'S' and the exit by the letter 'E'. There's a single blank line after each level. Input is terminated by three zeroes for L, R and C.

            Output

            Each maze generates one line of output. If it is possible to reach the exit, print a line of the form
            Escaped in x minute(s).

            where x is replaced by the shortest time it takes to escape.
            If it is not possible to escape, print the line
            Trapped!

            Sample Input

            3 4 5
            S....
            .###.
            .##..
            ###.#
            
            #####
            #####
            ##.##
            ##...
            
            #####
            #####
            #.###
            ####E
            
            1 3 3
            S##
            #E#
            ###
            
            0 0 0
            

            Sample Output

            Escaped in 11 minute(s).
            Trapped!
            
            這題不難,廣搜,不知道為什么這個題目在那個指導中出現在dfs中
            代碼也好些,就是floodfill,往六個方向搜,如果已經走過則不走,如果沒走過且能走則走
            這次數組開小了,第一次隊列開了1000,不知道怎么想的
            第二次檢查 改成10000了,然后還是wa
            第三次 改成100000,終于過了
             1#include<stdio.h>
             2#include<string.h>
             3#include<math.h>
             4struct node
             5{
             6    int x,y,z,d;
             7}
            ;
             8int dx[6][3]= {{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
             9int l,r,c,sum,ans,head,tail;
            10struct node que[100000],ss,tt;
            11short hash[35][35][35];
            12char map[35][35][35];
            13void bfs()
            14{
            15    int i,j;
            16    struct node now,new1;
            17    ans=0;
            18    head=0;
            19    tail=1;
            20    que[tail]=ss;
            21    memset(hash,0,sizeof(hash));
            22    hash[ss.x][ss.y][ss.z]=1;
            23    while (head<tail)
            24    {
            25        head++;
            26        now=que[head];
            27        /*if (now.x==tt.x&&now.y==tt.y&&now.z==tt.z)
            28        {
            29            ans=now.d;
            30            return;
            31        }*/

            32        for (i=0; i<6 ; i++ )
            33        {
            34            new1.x=now.x+dx[i][0];
            35            new1.y=now.y+dx[i][1];
            36            new1.z=now.z+dx[i][2];
            37            new1.d=now.d+1;
            38            if (new1.x>=0&&new1.x<l&&new1.y>=0&&new1.y<r&&new1.z>=0&&new1.z<c)//未越界
            39                if ((map[new1.x][new1.y][new1.z]!='#')&&(!hash[new1.x][new1.y][new1.z]))//能走且未走過
            40                {
            41                    if (map[new1.x][new1.y][new1.z]=='E')
            42                    {
            43                        ans=new1.d;
            44                        return;
            45                    }

            46                    if (!hash[new1.x][new1.y][new1.z])
            47                    {
            48                        tail++;
            49                        que[tail]=new1;
            50                        hash[new1.x][new1.y][new1.z]=1;
            51                    }

            52                }

            53        }

            54    }

            55}

            56void init()
            57{
            58    int i,j,k;
            59    for (i=0; i<l; i++ )
            60    {
            61        for (j=0; j<r ; j++ )
            62        {
            63            scanf("%s",&map[i][j]);
            64            for (k=0; k<c ; k++ )
            65            {
            66                if (map[i][j][k]=='S')
            67                {
            68                    ss.x=i;
            69                    ss.y=j;
            70                    ss.z=k;
            71                    ss.d=0;
            72                }

            73                if (map[i][j][k]=='E')
            74                {
            75                    tt.x=i;
            76                    tt.y=j;
            77                    tt.z=k;
            78                }

            79            }

            80        }

            81    }

            82}

            83int main()
            84{
            85    while (scanf("%d%d%d",&l,&r,&c)!=EOF&&!(l==0&&r==0&&c==0))
            86    {
            87        init();
            88        bfs();
            89        if (ans==0)
            90        {
            91            printf("Trapped!\n");
            92        }

            93        else
            94            printf("Escaped in %d minute(s).\n",ans);
            95    }

            96    return 0;
            97}

            98

            posted on 2012-02-24 13:13 jh818012 閱讀(221) 評論(0)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內容較長,點擊標題查看
            • --王私江
            久久高清一级毛片| 色偷偷88888欧美精品久久久| 青青青国产精品国产精品久久久久 | 日韩欧美亚洲综合久久| 精品综合久久久久久888蜜芽| av无码久久久久久不卡网站| 精品久久人人爽天天玩人人妻| 国产精品久久久久蜜芽| 潮喷大喷水系列无码久久精品| 久久夜色精品国产www| 久久午夜伦鲁片免费无码| 久久人人爽人人爽人人片AV麻豆 | 狠狠色综合网站久久久久久久| 中文国产成人精品久久亚洲精品AⅤ无码精品| 97视频久久久| 久久久久九九精品影院| 91视频国产91久久久| 中文字幕久久久久人妻| 亚洲美日韩Av中文字幕无码久久久妻妇 | 国产精品久久久香蕉| 国内精品久久久久久久亚洲| 国产V亚洲V天堂无码久久久| 久久精品国产AV一区二区三区 | 97久久精品无码一区二区| 无遮挡粉嫩小泬久久久久久久| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久精品国产2020| 欧美性猛交xxxx免费看久久久| 亚洲国产成人久久综合一| 久久久女人与动物群交毛片 | 伊人久久免费视频| 久久久青草久久久青草| 国产精品久久精品| 2020久久精品国产免费| 国产产无码乱码精品久久鸭| 亚洲午夜久久久影院| 亚洲国产精品高清久久久| 狠狠色狠狠色综合久久| 久久久久99精品成人片直播| 日韩av无码久久精品免费| 久久久噜噜噜久久熟女AA片|