#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" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

poj 2251 Dungeon Master(廣搜)

系統 2062 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條評論
主站蜘蛛池模板: 久久草在线视频 | 婷婷综合国产激情在线 | 日韩在线不卡 | 亚洲精品麻豆 | 成人精品在线观看 | 久草免费在线观看 | 成人福利网 | 亚洲欧洲日本天天堂在线观看 | 精品一区二区视频 | 免费在线国产视频 | 色姑娘综合网 | 天天操狠狠操夜夜操 | 国产在线观看福利 | 日韩中文字幕网站 | 日韩精品一区二区三区中文 | 蜜桃日本免费MV免费播放 | 免费观看一级毛片 | 综合网天天射 | 一区二区三区四区免费看 | 性xx视频| 刮伦人妇A片1级 | 亚洲综合久久久久久888 | 久久99精品久久久97夜夜嗨 | 嗯啊你轻点好深啊hh在线播放 | 亚洲综合在线播放 | 成人特级毛片 | 女人裸体让男人桶全过程 | 午夜国产电影 | 丝袜捆绑调教视频免费区 | 激情视频网站 | 狠狠干伊人 | 亚洲欧美一区二区三区另类 | 91网站在线看 | 日本一区免费在线观看 | 一级特色黄大片 | 欧美日韩精品一区二区在线线 | 亚洲人人| 99国产精品2018视频全部 | 清纯唯美综合网 | 国产福利免费观看 | av黄色在线观看 |