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

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 田兵 閱讀(1013) 評論(0)  編輯 收藏 引用 所屬分類: 算法筆記

<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

導航

統計

常用鏈接

留言簿(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精品| 欧美电影免费观看高清完整版| 亚洲精品一区二区在线观看| 午夜精品久久久久久久99热浪潮| 亚洲精品国久久99热| 久久婷婷蜜乳一本欲蜜臀| 欧美精品一区二区三区在线播放| 久久精品盗摄| 欧美三级电影大全| 欧美国内亚洲| 国产一区二区在线观看免费播放| 亚洲最新视频在线| 亚洲国产精品久久久久婷婷884| 午夜在线视频观看日韩17c| 免费不卡在线视频| 久久精品日韩欧美| 国产精品v片在线观看不卡| 欧美国产欧美亚洲国产日韩mv天天看完整 | 六月丁香综合| 国产九九视频一区二区三区| 午夜国产精品影院在线观看 | 欧美在线日韩在线| 欧美日韩在线免费视频| 亚洲第一天堂无码专区| 国产一区二区三区免费在线观看| 这里只有视频精品| 亚洲一级片在线看| 亚洲欧美999| 亚洲欧美日本精品| 欧美日韩专区| 日韩一区二区久久| 亚洲精品视频免费在线观看| 欧美aa国产视频| 老司机67194精品线观看| 国产一区二区三区四区hd| 亚洲欧美韩国| 久久久国产精品亚洲一区| 国产农村妇女毛片精品久久麻豆 | 亚洲高清在线观看| 久久中文久久字幕| 欧美成人综合| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲精品国产欧美| 欧美中文字幕在线观看| 国产美女诱惑一区二区| 亚洲午夜高清视频| 午夜欧美大片免费观看| 国产精品视频免费一区| 午夜久久资源| 久久亚洲色图| 亚洲激情视频在线| 欧美久久久久免费| 亚洲综合日韩中文字幕v在线| 欧美四级在线观看| 亚洲免费网址| 久久综合狠狠| 亚洲激情欧美激情| 欧美日韩三区| 亚洲欧美日韩在线一区| 嫩草影视亚洲| 亚洲午夜精品在线| 精品av久久久久电影| 欧美成ee人免费视频| 一区二区日韩精品| 久久天天狠狠| 在线亚洲精品| 一区二区三区在线视频观看| 欧美理论片在线观看| 亚洲一区二区在线观看视频| 老司机成人在线视频| 一个人看的www久久| 国产九九视频一区二区三区| 久久伊伊香蕉| 夜夜嗨网站十八久久| 久久精品91久久久久久再现| 精品动漫av| 亚洲手机成人高清视频| 久久一二三四| 亚洲香蕉在线观看| 国一区二区在线观看| 欧美精品999| 亚洲综合欧美| 亚洲激情电影在线| 久久激情综合| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 中文av一区特黄| 国内精品久久久久久久97牛牛| 欧美国产在线视频| 亚洲欧美一区二区精品久久久| 欧美大胆成人| 久久狠狠亚洲综合| 夜夜嗨av一区二区三区网站四季av | 国产精品国产福利国产秒拍| 久久国产精品一区二区三区| 亚洲免费av观看| 久久婷婷av| 亚洲欧美日韩国产中文| 亚洲精品日产精品乱码不卡| 国产日韩欧美三区| 欧美日韩免费看| 美女国产一区| 欧美成人免费网站| 久久av最新网址| 亚洲一区二区免费在线| 亚洲韩国青草视频| 好看的日韩视频| 国产精品v欧美精品v日本精品动漫 | 亚洲片国产一区一级在线观看| 久久成人免费| 亚洲自拍偷拍色片视频| 亚洲精品欧美日韩专区| 免费看亚洲片| 欧美在线视频免费观看| 亚洲在线观看视频网站| 亚洲每日在线| 亚洲欧洲中文日韩久久av乱码| 麻豆精品视频在线观看| 久久久欧美一区二区| 久久久久九九九九| 久久超碰97中文字幕| 欧美专区亚洲专区| 午夜在线a亚洲v天堂网2018| 亚洲午夜久久久久久久久电影院 | 午夜日韩在线| 亚洲一区二区三区成人在线视频精品| 亚洲高清三级视频| 在线观看福利一区| 亚洲大胆人体在线| 亚洲国产二区| 亚洲国产免费看| 亚洲国产日韩欧美在线图片 | 亚洲欧美国产77777| 一区二区三区精密机械公司| 西西裸体人体做爰大胆久久久| 在线亚洲欧美视频| 亚洲性视频网站| 新片速递亚洲合集欧美合集| 欧美一级网站| 久久久国产精品一区二区中文| 久久精品av麻豆的观看方式| 久久精品主播| 欧美成人免费小视频| 亚洲欧洲综合另类| 宅男噜噜噜66国产日韩在线观看| 一区二区三区欧美| 午夜宅男久久久| 久久亚洲欧洲| 欧美精品激情在线| 国产精品久久激情| 国产亚洲美州欧州综合国| 一区二区亚洲精品国产| 亚洲精品综合在线| 亚洲综合日韩在线| 久久久久久夜精品精品免费| 欧美成人午夜免费视在线看片| 最新精品在线| 亚洲欧美日韩在线一区| 久久久久这里只有精品| 欧美激情一区二区三区| 国产精品区免费视频| 国内精品久久久久久久97牛牛| 亚洲国产一区在线| 亚洲自拍偷拍福利| 欧美岛国激情| 中日韩视频在线观看| 久久www成人_看片免费不卡| 欧美成人午夜剧场免费观看| 国产精品美女诱惑| 雨宫琴音一区二区在线| 亚洲少妇一区| 久久免费国产| 一区二区福利| 久久综合影视| 久久精品国产亚洲aⅴ| 欧美日韩不卡在线| 禁断一区二区三区在线| 一区二区三区欧美激情| 久久一二三四| 99精品视频免费观看视频| 欧美激情一区二区三区四区| 午夜精品久久久久久99热| 久久在线免费观看| 欧美视频精品在线观看| 狠狠爱成人网| 亚洲综合视频网| 欧美激情1区2区| 欧美一区二区三区在线观看视频| 欧美精品一卡二卡| 在线播放日韩|