青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

PKU 2251 用DFS TLE了 BFS AC了

                                                                       Dungeon Master
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 6561 Accepted: 2610

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!

三維迷宮問題
據說要用BFS,范圍30 ,我以為DFS能搞定的,為什么會超時呢????
 1#include<iostream>
 2#include<string.h>
 3using namespace std;
 4char G[35][35][35];
 5bool g[35][35][35];
 6void dfs(int l,int r,int c)
 7{
 8     if(G[l][r][c]==0||G[l][r][c]=='#')return ;
 9     if((G[l+1][r][c]=='.'||G[l+1][r][c]>G[l][r][c])&&G[l+1][r][c]!=0&&G[l+1][r][c]!='#') { G[l+1][r][c]=G[l][r][c]+1;g[l+1][r][c]=1;dfs(l+1,r,c);}
10     if((G[l][r-1][c]=='.'||G[l][r-1][c]>G[l][r][c])&&G[l][r-1][c]!=0&&G[l][r-1][c]!='#') { G[l][r-1][c]=G[l][r][c]+1;g[l][r-1][c]=1;dfs(l,r-1,c);}  
11     if((G[l][r+1][c]=='.'||G[l][r+1][c]>G[l][r][c])&&G[l][r+1][c]!=0&&G[l][r+1][c]!='#') { G[l][r+1][c]=G[l][r][c]+1;g[l][r+1][c]=1;dfs(l,r+1,c);}
12     if((G[l][r][c-1]=='.'||G[l][r][c-1]>G[l][r][c])&&G[l][r][c-1]!=0&&G[l][r][c-1]!='#') { G[l][r][c-1]=G[l][r][c]+1;g[l][r][c-1]=1;dfs(l,r,c-1);}
13     if((G[l][r][c+1]=='.'||G[l][r][c+1]>G[l][r][c])&&G[l][r][c+1]!=0&&G[l][r][c+1]!='#') { G[l][r][c+1]=G[l][r][c]+1;g[l][r][c+1]=1;dfs(l,r,c+1);}
14     if((G[l-1][r][c]=='.'||G[l-1][r][c]>G[l][r][c])&&G[l-1][r][c]!=0&&G[l-1][r][c]!='#') { G[l-1][r][c]=G[l][r][c]+1;g[l-1][r][c]=1;dfs(l-1,r,c);}
15}
16
17int main()
18{    
19     int i,j,k,l,r,c,sl,sr,sc,el,er,ec;  //起點,終點 
20     while(cin>>l>>r>>c,l||r||c)
21     {
22        memset(G,0,sizeof (G));
23        memset(g,0,sizeof (g));
24        for(i=1; i<=l ;i++)
25        for(j=1; j<=r; j++)
26        for(k=1; k<=c; k++)
27        {
28          cin>>G[i][j][k];
29          if(G[i][j][k]=='S')
30          { sl=i; sr=j; sc=j; G[i][j][k]=1; g[i][j][k]=1; }
31          else if(G[i][j][k]=='E')
32          {el=i; er=j; ec=k; G[i][j][k]=127; }
33        }           
34        
35        dfs(sl,sr,sc); 
36      /**//*  for(i=1; i<=l ; i++,cout<<endl)
37        for(j=1; j<=r; j++,cout<<endl)
38        for(k=1; k<=c; k++)
39        cout<<(int)G[i][j][k]<<" ";
40        for(i=1; i<=l ; i++,cout<<endl)
41        for(j=1; j<=r; j++,cout<<endl)
42        for(k=1; k<=c; k++)
43        cout<<(int)g[i][j][k]<<" ";
44        */if(g[el][er][ec]==0)cout<<"Trapped!"<<endl;
45        else cout<<"Escaped in "<<int(G[el][er][ec]-1)<<" minute(s)."<<endl;
46     }
47    // system("pause");
48    return 0;
49}

寫個BFS終于過了,只要在平面的迷宮基礎上在垂直方向往上,往下都搜兩次就可以了
 1 #include<iostream>
 2 #include<string.h>
 3 #include<queue>
 4 using namespace std;
 5 char G[35][35][35];
 6 int cnt[35][35][35];
 7 struct type
 8 int l,r,c; };
 9 
10 int main()
11 {
12     int l,c,r,sl,sc,sr,el,ec,er,i,j,k;
13     void bfs(int sl,int sr,int sc);
14     while(cin>>l>>r>>c,l||c||r)
15     {
16       memset(G,0,sizeof (G));
17       memset(cnt,0,sizeof (cnt));
18       for(i=1; i<=l; i++)
19       for(j=1; j<=r; j++)
20       for(k=1; k<=c; k++)
21       {
22         cin>>G[i][j][k];
23         if(G[i][j][k]=='S'){sl=i; sr=j; sc=k; }
24         else if(G[i][j][k]=='E'){el=i; er=j; ec=k; }
25       }
26     
27       bfs(sl,sr,sc);
28    //  for(i=1; i<=l; i++,cout<<endl)
29     // for(j=1; j<=r; j++,cout<<endl)
30      //for(k=1; k<=c; k++)
31      //cout<<cnt[i][j][k]<<' ';
32     
33     if(el==sl&&er==sr&&ec==sc)cout<<"Escaped in "<<0<<" minute(s). "<<endl;
34     else if(cnt[el][er][ec]>0)cout<<"Escaped in "<<cnt[el][er][ec]<<" minute(s). "<<endl;
35     else cout<<"Trapped! "<<endl;
36     }
37    // system("pause");
38     return 0;
39 }
40 
41 bool valid(int l,int r,int c)
42 {
43   return (G[l][r][c]=='.'||G[l][r][c]=='E');  
44 }
45 
46 void bfs(int sl,int sr, int sc)
47 {
48   queue<struct type> q;
49   struct type tem; tem.l=sl; tem.r=sr; tem.c=sc; 
50   q.push(tem);
51   while(q.size())
52   {
53     tem=q.front(); q.pop();
54     int l=tem.l,r=tem.r,c=tem.c;
55     if(valid(l,r+1,c)&&cnt[l][r+1][c]==0){cnt[l][r+1][c]=cnt[l][r][c]+1;tem.l=l; tem.r=r+1; tem.c=c; q.push(tem); }
56     if(valid(l,r-1,c)&&cnt[l][r-1][c]==0){cnt[l][r-1][c]=cnt[l][r][c]+1;tem.l=l; tem.r=r-1; tem.c=c; q.push(tem); }
57     if(valid(l,r,c+1)&&cnt[l][r][c+1]==0){cnt[l][r][c+1]=cnt[l][r][c]+1;tem.l=l; tem.r=r; tem.c=c+1; q.push(tem); }
58     if(valid(l,r,c-1)&&cnt[l][r][c-1]==0){cnt[l][r][c-1]=cnt[l][r][c]+1;tem.l=l; tem.r=r; tem.c=c-1; q.push(tem); }
59     if(valid(l-1,r,c)&&cnt[l-1][r][c]==0){cnt[l-1][r][c]=cnt[l][r][c]+1;tem.l=l-1; tem.r=r; tem.c=c; q.push(tem); }
60     if(valid(l+1,r,c)&&cnt[l+1][r][c]==0){cnt[l+1][r][c]=cnt[l][r][c]+1;tem.l=l+1; tem.r=r; tem.c=c; q.push(tem); }
61     
62   }
63 }

posted on 2010-05-28 21:50 田兵 閱讀(1007) 評論(0)  編輯 收藏 引用 所屬分類: 算法筆記

<2010年5月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

導航

統計

常用鏈接

留言簿(2)

隨筆分類(65)

隨筆檔案(65)

文章檔案(2)

ACM

搜索

積分與排名

最新隨筆

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久尤物视频| 亚洲成人在线网站| 国产视频亚洲精品| 欧美视频中文字幕| 欧美三级黄美女| 国产精品精品视频| 国产精品视频成人| 韩日精品在线| 亚洲国产日韩欧美| 99这里有精品| 性久久久久久| 欧美aⅴ99久久黑人专区| 亚洲电影自拍| 中文在线不卡视频| 欧美一级片在线播放| 欧美影院在线| 欧美福利电影网| 国产精品久久一卡二卡| 免费人成网站在线观看欧美高清| 免费欧美电影| 亚洲精品黄色| 亚洲小说欧美另类社区| 久久久久在线| 欧美日韩精品福利| 国产主播精品在线| 亚洲免费观看在线观看| 亚洲欧美在线播放| 欧美福利小视频| 亚洲调教视频在线观看| 欧美在线欧美在线| 欧美日韩福利在线观看| 国产揄拍国内精品对白| 日韩系列在线| 久久中文字幕一区| 亚洲视频一起| 欧美精品午夜| 在线看一区二区| 亚洲在线观看视频网站| 亚洲第一精品福利| 欧美制服丝袜第一页| 欧美日韩在线播放| 亚洲激情视频在线播放| 久久久91精品国产一区二区精品| 亚洲老板91色精品久久| 另类春色校园亚洲| 国产亚洲人成网站在线观看| 亚洲视频一区二区免费在线观看| 欧美va亚洲va国产综合| 欧美一区二区三区四区高清 | 久久久91精品国产一区二区三区| 欧美激情导航| 激情六月综合| 久久精品成人欧美大片古装| 亚洲人成在线观看一区二区| 久久综合99re88久久爱| 午夜精品免费在线| 亚洲高清视频在线| 久久亚洲捆绑美女| 激情校园亚洲| 久久综合久久88| 久久偷窥视频| 亚洲国产精品久久久久| 久久婷婷久久一区二区三区| 欧美一区二区免费视频| 国产精品网红福利| 久久精品盗摄| 久久久久久9999| 亚洲福利视频在线| 亚洲第一成人在线| 欧美精品一区二区三区视频| 99精品久久久| 一本一本久久a久久精品综合妖精| 欧美三级午夜理伦三级中视频| 一级成人国产| 亚洲无线观看| 亚洲私人影吧| 国产精品婷婷| 久久久久久久999精品视频| 欧美在线亚洲| 亚洲国产另类精品专区 | 黄色工厂这里只有精品| 久久久久国产一区二区三区| 欧美中文字幕精品| 尤物精品国产第一福利三区| 欧美黄色一区| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 久久天堂av综合合色| 久久国产精品色婷婷| 最近看过的日韩成人| 99亚洲一区二区| 国产视频久久网| 欧美+日本+国产+在线a∨观看| 欧美风情在线观看| 午夜精品久久久久久久白皮肤| 欧美在线观看一区| 日韩午夜电影| 亚洲欧美成人在线| 在线日韩精品视频| 亚洲狼人精品一区二区三区| 国产日本欧美视频| 亚洲国产一区二区a毛片| 欧美视频免费| 欧美国产日韩xxxxx| 国产精品一区二区久久精品| 欧美国产在线观看| 国产欧美va欧美va香蕉在| 欧美黑人国产人伦爽爽爽| 欧美午夜不卡在线观看免费| 欧美成人国产va精品日本一级| 欧美日韩国产精品专区| 久久一区视频| 国产精品啊啊啊| 亚洲电影av| 黑人巨大精品欧美黑白配亚洲| 亚洲色在线视频| 亚洲激情一区二区| 欧美一区二区高清在线观看| 在线综合亚洲| 欧美成人蜜桃| 免费在线国产精品| 国产伦精品一区二区三区照片91| 亚洲国产精品久久人人爱蜜臀 | 久久国产精品亚洲77777| 99国产一区| 免费看黄裸体一级大秀欧美| 久久久久久久999| 国产欧美在线| 亚洲综合视频1区| 亚洲欧美日韩国产综合精品二区| 欧美成年人视频| 欧美大胆成人| 性欧美暴力猛交69hd| 亚洲天堂网在线观看| 欧美好骚综合网| 欧美福利一区| 亚洲国产一区二区三区高清 | 亚洲专区在线| 欧美日韩1区2区| 亚洲激情亚洲| 亚洲高清在线视频| 蜜臀av一级做a爰片久久| 欧美成人免费一级人片100| 亚洲大片免费看| 久久亚洲一区二区| 欧美成人免费网站| 亚洲日产国产精品| 欧美男人的天堂| 一区二区日韩精品| 亚洲欧美日韩在线播放| 国产精品久久久久久久久| 亚洲永久字幕| 久久亚洲风情| 亚洲三级免费| 欧美视频在线观看免费网址| 亚洲淫性视频| 久久综合福利| 亚洲精品一二三| 国产精品大片免费观看| 性色av一区二区三区红粉影视| 久久人人超碰| 99re66热这里只有精品4| 欧美日韩国产首页| 亚洲欧美99| 亚洲高清视频在线| 午夜综合激情| 亚洲国产精品一区二区www| 欧美另类亚洲| 欧美一区二区三区久久精品茉莉花 | 国产精品欧美一区喷水 | 欧美日韩精品欧美日韩精品| 中文精品99久久国产香蕉| 欧美专区福利在线| 在线播放中文字幕一区| 欧美日韩高清在线| 欧美一区亚洲一区| 亚洲精品美女久久7777777| 亚洲一区精彩视频| 狠狠色综合日日| 欧美三级电影大全| 久久久www成人免费无遮挡大片 | 欧美福利网址| 亚洲欧美日韩爽爽影院| 欧美成人激情视频| 亚洲免费在线电影| 在线观看国产精品淫| 欧美三日本三级少妇三2023| 久久精品亚洲精品国产欧美kt∨| 亚洲精品三级| 免费中文字幕日韩欧美| 亚洲欧美一区二区三区久久 | 亚洲国产日韩欧美| 国产无遮挡一区二区三区毛片日本| 亚洲国产二区| 久久午夜国产精品| 99天天综合性| 亚洲风情亚aⅴ在线发布| 欧美一区二区在线免费观看| 日韩一级黄色av| 亚洲国产成人精品久久| 欧美视频精品一区|