ACM 之 C - Dungeon Master

原題鏈接poj

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!

理解

這道題是三維地圖廣搜鸿脓,我做這道題的時候遇到了很多麻煩:
一抑钟、開始用的深搜以為自己沒錯一直改改改,后來在學(xué)長的提醒下用bfs重新
寫了答憔;
二味赃、雖然不是大問題,但是在輸入的時候換行符的格式要注意虐拓,記得用getchar()吃掉心俗;
三、也是最重要的一點H鼐浴城榛!每個可行的分支在進(jìn)入隊列的時候一定要狀態(tài)標(biāo)記它!态兴!不然會重復(fù)運行導(dǎo)致超時狠持。

代碼部分

#include <cstring>
#include <cstdio>
#include <queue>
using namespace std;
char map[31][31][31],cc;
int s1,s2,s3,x,y,z,a,b,c,finde,sum,fla[31][31][31];
struct node
{
    int x,y,z;
};
queue<node>S;
node chan[6]={{1,0,0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
int main()
{
    while(scanf("%d%d%d",&a,&b,&c)&&a&&b&&c)
    {
        getchar();//吃換行符
        memset(fla,0,sizeof(fla));
        memset(map,'#',sizeof(map));//數(shù)據(jù)清空
        for(int i=0;i<a;i++)
        {   for(int j=0;j<b;j++)
            {   for(int k=0;k<c;k++)
                {
                    scanf("%c",&map[i][j][k]);//地圖輸入
                    if(map[i][j][k]=='.'||map[i][j][k]=='E')
                        fla[i][j][k]=-1;
                    if(map[i][j][k]=='S')
                    {
                        s1=i;s2=j;s3=k;
                    }
                }getchar();
            }getchar();
        }
        node thes;
        thes.x=s1;thes.y=s2;thes.z=s3;
        while(!S.empty())//隊列清空
        {
            S.pop();
        }
        node count={-1,0,0};
        S.push(count);
        S.push(thes);
        sum=-1;finde=0;
        while(S.size()>1)//循環(huán)搜索出口
        {
            if(S.front().x == -1){ sum++; S.push(S.front()); S.pop(); }//層數(shù)標(biāo)記
            x = S.front().x; y = S.front().y; z = S.front().z;
            if(map[x][y][z]=='E'){finde=1;break;}
            node si;
            for(int kk=0;kk<6;kk++)
            {
                if(fla[x+chan[kk].x][y+chan[kk].y][z+chan[kk].z]==-1)
                {
                    si.x=x+chan[kk].x;
                    si.y=y+chan[kk].y;
                    si.z=z+chan[kk].z;
                    S.push(si);
                    fla[x+chan[kk].x][y+chan[kk].y][z+chan[kk].z]=1;//一定要在這里標(biāo)記它!不然就可能超時瞻润。
                }
            }
            S.pop();
        }
        if(finde==1)
        {
            printf("Escaped in %d minute(s).\n",sum);
        }
        else
            printf("Trapped!\n");
    }
    return 0;
}

意見反饋 || 任何建議

聯(lián)系我(新浪)
郵箱:qianlizhihao@gmail.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末喘垂,一起剝皮案震驚了整個濱河市甜刻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌正勒,老刑警劉巖得院,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異章贞,居然都是意外死亡祥绞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門鸭限,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜕径,“玉大人,你說我怎么就攤上這事败京《涤鳎” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵赡麦,是天一觀的道長虹统。 經(jīng)常有香客問我,道長隧甚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任渡冻,我火速辦了婚禮戚扳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘族吻。我一直安慰自己帽借,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布超歌。 她就那樣靜靜地躺著砍艾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巍举。 梳的紋絲不亂的頭發(fā)上脆荷,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音懊悯,去河邊找鬼蜓谋。 笑死,一個胖子當(dāng)著我的面吹牛炭分,可吹牛的內(nèi)容都是我干的桃焕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼捧毛,長吁一口氣:“原來是場噩夢啊……” “哼观堂!你這毒婦竟也來了让网?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤师痕,失蹤者是張志新(化名)和其女友劉穎溃睹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體七兜,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡丸凭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了腕铸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惜犀。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖狠裹,靈堂內(nèi)的尸體忽然破棺而出虽界,到底是詐尸還是另有隱情,我是刑警寧澤涛菠,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布莉御,位于F島的核電站,受9級特大地震影響俗冻,放射性物質(zhì)發(fā)生泄漏礁叔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一迄薄、第九天 我趴在偏房一處隱蔽的房頂上張望琅关。 院中可真熱鬧,春花似錦讥蔽、人聲如沸涣易。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽新症。三九已至,卻和暖如春响禽,著一層夾襖步出監(jiān)牢的瞬間徒爹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工金抡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瀑焦,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓梗肝,卻偏偏與公主長得像榛瓮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子巫击,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,576評論 0 23
  • 《烏合之眾》以十八世紀(jì)歐洲戰(zhàn)爭為背景禀晓,分析當(dāng)時作為主體參戰(zhàn)的群眾精续,他們的心理特征,借以表達(dá)對法國民族文明的失望與不...
    0121af403f65閱讀 568評論 0 0
  • 像園子里最后一串葡萄 掛在藤間粹懒,緘默著不開口 雨一直下 一群雨邀約著另一群雨 不顧天地只管下 這樣的天氣 適合想一...
    一只玻璃魚閱讀 200評論 0 3
  • 2016年年末的午餐是和孩子的婆婆爺爺重付、外公外婆、小姨小姨爹一起吃的凫乖,餐后送了婆婆爺爺回家确垫,爸爸也去辦事,只...
    千吉change閱讀 174評論 0 0
  • 說這些問題,未免有點政治化导街,但是人是一個大的家庭的一個元素披泪,逃離不了這個問題。人類社會的演變是一個充滿血腥的過程搬瑰,...
    佛禪善心閱讀 197評論 0 1