#include#includeusingnamespacestd;constintMAXN=50;charstr[MAXN][MAXN][MAXN];intstep[MAXN][MAXN][MAXN];intvis[MAXN][MAXN][MAXN];intl,r,c;structNode{intx,y,z;}s,e;intB" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

poj 2251 Dungeon Master(廣搜)

系統 1987 0

題意:三維空間,可以走上下左右前后六個方向,求最短路徑,BFS

??

      #include<stdio.h>
      
        

#include
      
      <queue>
      
        

#include
      
      <
      
        string
      
      .h>


      
        using
      
      
        namespace
      
      
         std;


      
      
        const
      
      
        int
      
       MAXN=
      
        50
      
      
        ;




      
      
        char
      
      
         str[MAXN][MAXN][MAXN];


      
      
        int
      
      
         step[MAXN][MAXN][MAXN];


      
      
        int
      
      
         vis[MAXN][MAXN][MAXN];


      
      
        int
      
      
         l,r,c;


      
      
        struct
      
      
         Node

{

    
      
      
        int
      
      
         x,y,z;

}s,e;




      
      
        int
      
      
         BFS()

{

    
      
      
        int
      
      
         i,j;

    Node head,next;

    queue
      
      <Node>
      
        Q;

    Q.push(s);

    step[s.x][s.y][s.z]
      
      =
      
        0
      
      
        ;

    
      
      
        while
      
      (!
      
        Q.empty())

    {

        head
      
      =
      
        Q.front();

        Q.pop();

        
      
      
        for
      
      (i=
      
        0
      
      ;i<
      
        6
      
      ;i++
      
        )

        {

            next
      
      =
      
        head;

            
      
      
        if
      
      (i==
      
        0
      
      ) next.x-=
      
        1
      
      
        ;

            
      
      
        if
      
      (i==
      
        1
      
      ) next.x+=
      
        1
      
      
        ;

            
      
      
        if
      
      (i==
      
        2
      
      ) next.y-=
      
        1
      
      
        ;

            
      
      
        if
      
      (i==
      
        3
      
      ) next.y+=
      
        1
      
      
        ;

            
      
      
        if
      
      (i==
      
        4
      
      ) next.z-=
      
        1
      
      
        ;

            
      
      
        if
      
      (i==
      
        5
      
      ) next.z+=
      
        1
      
      
        ;

            
      
      
        if
      
      (!vis[next.x][next.y][next.z] && str[next.x][next.y][next.z]==
      
        1
      
      
        )

            {

                vis[next.x][next.y][next.z]
      
      =
      
        1
      
      
        ;

                Q.push(next);

                step[next.x][next.y][next.z]
      
      =step[head.x][head.y][head.z]+
      
        1
      
      
        ;

                
      
      
        if
      
      (next.x==e.x && next.y==e.y && next.z==e.z) 
      
        return
      
        step[head.x][head.y][head.z]+
      
        1
      
      
        ;

            }

        }

    }

    
      
      
        return
      
      
        0
      
      
        ;

}


      
      
        int
      
      
         main()

{

    
      
      
        int
      
      
         i,j,k;

    
      
      
        while
      
      (scanf(
      
        "
      
      
        %d%d%d
      
      
        "
      
      ,&l,&r,&c)!=
      
        EOF)

    {

        
      
      
        if
      
      (l==
      
        0
      
       && r==
      
        0
      
       && c==
      
        0
      
      ) 
      
        break
      
      
        ;

        memset(vis,
      
      
        0
      
      ,
      
        sizeof
      
      
        (vis));

        memset(str,
      
      
        0
      
      ,
      
        sizeof
      
      
        (str));

        
      
      
        for
      
      (i=
      
        1
      
      ; i<=l; i++
      
        )

        {

            
      
      
        for
      
      (j=
      
        1
      
      ; j<=r; j++
      
        )

            {

                scanf(
      
      
        "
      
      
        %s
      
      
        "
      
      ,str[i][j]+
      
        1
      
      
        );

                
      
      
        for
      
      (k=
      
        1
      
      ; str[i][j][k]; k++
      
        )

                {

                    
      
      
        if
      
      (str[i][j][k]==
      
        '
      
      
        #
      
      
        '
      
      ) str[i][j][k]=
      
        0
      
      
        ;

                    
      
      
        if
      
      (str[i][j][k]==
      
        '
      
      
        .
      
      
        '
      
      ) str[i][j][k]=
      
        1
      
      
        ;

                    
      
      
        if
      
      (str[i][j][k]==
      
        '
      
      
        S
      
      
        '
      
      
        )

                    {

                        str[i][j][k]
      
      =
      
        1
      
      
        ;

                        s.x
      
      =
      
        i;

                        s.y
      
      =
      
        j;

                        s.z
      
      =
      
        k;

                    }

                    
      
      
        if
      
      (str[i][j][k]==
      
        '
      
      
        E
      
      
        '
      
      
        )

                    {

                        str[i][j][k]
      
      =
      
        1
      
      
        ;

                        e.x
      
      =
      
        i;

                        e.y
      
      =
      
        j;

                        e.z
      
      =
      
        k;

                    }

                }

            }

        }

        
      
      
        int
      
       ans=
      
        BFS();

        
      
      
        if
      
      (ans) printf(
      
        "
      
      
        Escaped in %d minute(s).\n
      
      
        "
      
      
        ,ans);

        
      
      
        else
      
       printf(
      
        "
      
      
        Trapped!\n
      
      
        "
      
      
        );



    }

    
      
      
        return
      
      
        0
      
      
        ;

}
      
    

?

poj 2251 Dungeon Master(廣搜)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中文在线日韩 | 免费看成人毛片 | 亚洲视频免费看 | 婷婷的久久五月综合先锋影音 | 欧美日韩综合 | 欧美成综合网网站 | 国产呦系列呦交 | 日本一二区视频 | 国产成人精品亚洲777图片 | 快射影院| 亚洲国产成人久久一区久久 | 久久国产精品系列 | 欧美久在线观看在线观看 | 欧美成人 一区二区三区 | 九九热精品在线视频 | 97成人资源| 久久e| 色综久久 | 久久艹在线观看 | 亚洲综合区小说区激情区噜噜 | 99热久久精品国产66 | 色综合图| 97中文字幕在线观看 | 一级毛片在线播放免费 | 97视频精品全国在线观看 | 国产成人综合亚洲欧美在 | 黄色片网站观看 | 精品牛牛影视久久精品 | 99久久伊人 | 久久亚洲国产精品五月天婷 | 国产成人精品亚洲日本在线 | 亚洲国产美女精品久久久久 | 国产精品一区牛牛影视 | 免费超爽大片黄网站 | 久久中文字幕久久久久91 | 久久精品人人做人人爱爱 | 亚洲国产清纯 | 老头与老头同性tube可播放 | 九九精品99久久久香蕉 | 国产一区二区在线观看免费 | 牛牛影视在线 |