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

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

poj 2251 Dungeon Master(廣搜)

系統 2421 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條評論