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

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>
            欧美成人三级在线| 老司机免费视频一区二区| 欧美亚一区二区| 中国成人在线视频| 午夜精品久久久久久久久久久久久| 国产精品久久久久免费a∨| 亚洲免费在线看| 亚洲中无吗在线| 依依成人综合视频| 亚洲国产精品女人久久久| 欧美国产日韩精品| 亚洲专区国产精品| 久久青青草原一区二区| 一区二区高清| 午夜精品久久久久久久蜜桃app| 国产一区二区三区自拍| 亚洲二区在线| 国产乱码精品1区2区3区| 老司机免费视频一区二区| 欧美刺激午夜性久久久久久久| 亚洲亚洲精品在线观看| 久久激情视频| 亚洲欧美成人一区二区三区| 久久激情视频免费观看| 夜夜爽99久久国产综合精品女不卡| 亚洲男人影院| 亚洲精品精选| 久久成人免费网| 一本色道久久| 久久视频国产精品免费视频在线| 艳女tv在线观看国产一区| 欧美一级淫片aaaaaaa视频| 亚洲美女av网站| 欧美在线观看www| 亚洲一区二区黄| 免费观看不卡av| 久久9热精品视频| 欧美日韩国产a| 欧美成人性生活| 国产日产亚洲精品| 一区二区不卡在线视频 午夜欧美不卡'| 国内精品视频在线观看| 亚洲一区二区不卡免费| 99国内精品久久| 欧美电影免费观看高清| 久久婷婷久久一区二区三区| 欧美日韩系列| 亚洲精美视频| 亚洲欧洲日韩在线| 蜜臀久久99精品久久久画质超高清| 欧美影视一区| 国产日韩精品在线播放| 亚洲视频一二区| 亚洲视频免费| 欧美日韩一区二区三区四区在线观看| 欧美福利视频网站| 在线观看的日韩av| 久久这里有精品视频| 六月婷婷久久| 一区二区三区在线免费视频| 欧美一区二区女人| 久久久夜精品| 精品电影在线观看| 久久综合中文字幕| 亚洲国产精品v| 日韩一区二区电影网| 欧美精品三级在线观看| 日韩视频欧美视频| 亚洲免费在线| 国产日韩精品一区观看| 久久国产精品一区二区| 欧美成人免费视频| 亚洲美女黄网| 国产精品久99| 亚洲欧美日韩视频一区| 久久久福利视频| 在线观看日韩| 欧美日韩国产成人| 亚洲——在线| 玖玖在线精品| 日韩一级大片| 国产欧美视频一区二区| 欧美在线观看视频一区二区| 蜜桃伊人久久| 中文日韩电影网站| 国产日韩欧美一区二区三区在线观看 | 理论片一区二区在线| 亚洲国产成人精品久久久国产成人一区 | 欧美一级片一区| 激情六月婷婷综合| 欧美粗暴jizz性欧美20| 一区二区三区产品免费精品久久75| 亚洲女同精品视频| 影音先锋久久久| 欧美日韩调教| 久久久久久一区二区| 亚洲精选久久| 久久综合伊人| 亚洲免费视频网站| 亚洲国产mv| 国产精品一级| 欧美精品午夜| 久久精品亚洲一区二区| 夜夜爽av福利精品导航 | 免费成人高清视频| 亚洲主播在线| 亚洲精品美女久久7777777| 国产精品一国产精品k频道56| 久久婷婷国产综合尤物精品 | 亚洲国产成人久久| 欧美在线一级视频| 在线亚洲高清视频| 亚洲国产精品成人精品| 国产精品天天看| 欧美乱人伦中文字幕在线| 久久国产乱子精品免费女| 在线视频精品一区| 亚洲黑丝在线| 美女精品视频一区| 久久精品成人欧美大片古装| 一本色道久久综合亚洲精品按摩 | 在线观看欧美日韩国产| 国产欧美日韩综合精品二区| 欧美日韩精品综合| 老司机一区二区| 久久久人人人| 久久精品一区二区三区不卡牛牛| 在线视频欧美日韩精品| 日韩视频一区二区三区在线播放| 欧美99久久| 免费亚洲网站| 蜜桃av一区二区三区| 久久永久免费| 麻豆精品视频在线观看| 久久免费精品视频| 久久男人av资源网站| 久久精品视频在线免费观看| 欧美一级黄色网| 性做久久久久久久久| 午夜精品久久久久久久99水蜜桃| 中文在线一区| 亚洲一区二区三区乱码aⅴ| 99热在线精品观看| 一区二区三区三区在线| 亚洲图片欧洲图片av| 亚洲视频专区在线| 亚洲一区二区三区四区中文| 亚洲一区免费| 久久国内精品视频| 久久婷婷蜜乳一本欲蜜臀| 久久躁日日躁aaaaxxxx| 欧美va日韩va| 亚洲国产清纯| 亚洲精品中文字幕有码专区| 亚洲美洲欧洲综合国产一区| 日韩一二在线观看| 亚洲综合激情| 久久美女性网| 欧美精品videossex性护士| 欧美日韩在线视频一区二区| 国产精品jvid在线观看蜜臀| 国产精品夜色7777狼人| 激情欧美一区二区三区在线观看| 亚洲国产精品第一区二区| 亚洲免费观看高清完整版在线观看| 一本久久a久久免费精品不卡| 亚洲在线观看视频网站| 久久久久久久综合色一本| 欧美激情自拍| 在线视频亚洲一区| 久久久福利视频| 欧美日韩免费观看一区=区三区| 国产欧美精品一区aⅴ影院| 一区二区亚洲精品国产| 亚洲最新合集| 久久婷婷色综合| 亚洲免费观看| 久久久久久尹人网香蕉| 欧美日韩免费网站| 伊人精品久久久久7777| 亚洲一区在线免费观看| 麻豆av一区二区三区久久| 99v久久综合狠狠综合久久| 欧美中文字幕第一页| 欧美日韩国产美女| 亚洲高清视频在线| 性欧美大战久久久久久久免费观看| 欧美福利一区| 欧美一区国产二区| 欧美性猛交xxxx免费看久久久| 一区在线观看| 久久国产99| 亚洲视频中文| 欧美日韩精品一区二区| 亚洲高清资源综合久久精品| 欧美一区二区私人影院日本| 9国产精品视频| 欧美成人四级电影| ●精品国产综合乱码久久久久| 欧美在线中文字幕|