• <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>

            AOJ 1005 Hero In Maze BFS

            Hero In Maze

            Time Limit:JAVA/Others2000/1000MS  Memory Limit:JAVA/Others131072/65536KB
            Total Submit:240 Accepted:51

            Description

            500年前,Jesse是我國最卓越的劍客。他英俊瀟灑,而且機智過人^_^。

            突然有一天,Jesse心愛的公主被魔王困在了一個巨大的迷宮中。Jesse聽說這個消息已經是兩天以后了,他知道公主在迷宮中還能堅持T天,他急忙趕到迷宮,開始到處尋找公主的下落。
            時間一點一點的過去,Jesse還是無法找到公主。最后當他找到公主的時候,美麗的公主已經死了。從此Jesse郁郁寡歡,茶飯不思,一年后追隨公主而去了。T_T
            500年后的今天,Jesse托夢給你,希望你幫他判斷一下當年他是否有機會在給定的時間內找到公主。

            他會為你提供迷宮的地圖以及所剩的時間T。請你判斷他是否能救出心愛的公主。

            Input

            題目包括多組測試數據。
            每組測試數據以三個整數N,M,T(00)開頭,分別代表迷宮的長和高,以及公主能堅持的天數。
            緊接著有M行,N列字符,由".","*","P","S"組成。其中
            "." 代表能夠行走的空地。
            "*" 代表墻壁,Jesse不能從此通過。
            "P" 是公主所在的位置。
            "S" 是Jesse的起始位置。
            每個時間段里Jesse只能選擇“上、下、左、右”任意一方向走一步。
            輸入以0 0 0結束。

            Output

            如果能在規定時間內救出公主輸出“YES”,否則輸出“NO”。

            Sample Input

            4 4 10
            ....
            ....
            ....
            S**P
            0 0 0

            Sample Output

            YES

            寫的第一個BFS,激動!!
            代碼如下,高手飄過,你們根本不需要看,太初級了。
            這個代碼主要兩個地方花了很多時間:
            1,隊列本應從隊頭取元素的,我從尾部取了,后來用queue的front和push可以很方便的實現。
            2.,是沒有考慮公主被包圍的情況,即公主周圍全是‘*’,那么王子就沒辦法達到,這樣dist[x2][y2](x2,y2是公主的位置)一直是0,肯定小于t;
             1#include<iostream>
             2#include<queue>
             3using namespace std;
             4char a[105][105];
             5bool f[105][105];
             6int dist[105][105];
             7struct point 
             8int x,y; };
             9
            10bool valid(int x,int y)
            11return !f[x][y]&&a[x][y]!='*'&&a[x][y]; }
            12
            13void bfs(int i,int j)
            14{
            15     dist[i][j]=0; f[i][j]=1;
            16     struct point tem;
            17     tem.x=i; tem.y=j;
            18     queue<struct point>q;
            19     q.push(tem);
            20      while(q.size())
            21      {
            22         tem=q.front();q.pop(); 
            23         int x=tem.x,y=tem.y;
            24         if(valid(x-1,y)){f[x-1][y]=1;  dist[x-1][y]=dist[x][y]+1;tem.x=x-1; tem.y=y; q.push(tem);}
            25         if(valid(x,y-1)){f[x][y-1]=1;  dist[x][y-1]=dist[x][y]+1;tem.x=x; tem.y=y-1; q.push(tem);}
            26         if(valid(x+1,y)){f[x+1][y]=1;  dist[x+1][y]=dist[x][y]+1;tem.x=x+1; tem.y=y; q.push(tem);}
            27         if(valid(x,y+1)){f[x][y+1]=1;  dist[x][y+1]=dist[x][y]+1;tem.x=x; tem.y=y+1; q.push(tem);}
            28      }

            29    
            30}

            31
            32int main()
            33{
            34    int n,m,t,i,j,u;
            35    int x,y,x2,y2;
            36    while(cin>>m>>n>>t,n||m||t)
            37    {
            38      memset(a,0,sizeof a);
            39      memset(f,0,sizeof f);
            40      memset(dist,0,sizeof dist);
            41      x=y=x2=y2=1;
            42      for(i=1; i<=n; i++)
            43      for(j=1; j<=m;j++)
            44       {
            45                cin>>a[i][j];
            46                if(a[i][j]=='S'){x=i; y=j;}
            47                else if(a[i][j]=='P'){x2=i; y2=j; }
            48       }

            49    
            50       bfs(x,y);
            51   
            52      if(x==x2&&y==y2)cout<<"YES"<<endl;
            53      else if(dist[x2][y2]==0)cout<<"NO"<<endl;
            54      else if(dist[x2][y2]<=t)cout<<"YES"<<endl;
            55      else cout<<"NO"<<endl;
            56    }

            57 
            58   return 0;   
            59}

            posted on 2010-05-20 21:58 田兵 閱讀(1696) 評論(2)  編輯 收藏 引用 所屬分類: 算法筆記

            評論

            # re: AOJ 1005 Hero In Maze BFS[未登錄] 2010-05-21 22:54 meta

            AOJ是哪里的Online Judge啊,沒有找到啊~  回復  更多評論   

            # re: AOJ 1005 Hero In Maze BFS 2010-05-22 18:11 田兵

            http://icpc.ahu.edu.cn:81/AOJ/
            學校的OJ,不出名,都是給自己做的,  回復  更多評論   

            <2010年6月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            導航

            統計

            常用鏈接

            留言簿(2)

            隨筆分類(65)

            隨筆檔案(65)

            文章檔案(2)

            ACM

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            色成年激情久久综合| 久久久久久久综合日本亚洲| 久久亚洲国产精品成人AV秋霞| 久久久久久久免费视频| 久久精品人人做人人妻人人玩| 久久中文字幕一区二区| 久久久久精品国产亚洲AV无码| 国内精品久久久人妻中文字幕| 久久精品国产清自在天天线| 7777精品伊人久久久大香线蕉| 久久成人国产精品| 国产免费久久精品99re丫y| 亚洲国产另类久久久精品黑人 | 日产久久强奸免费的看| 一本久久a久久精品vr综合| 国产成人精品综合久久久| 东方aⅴ免费观看久久av| 精品久久综合1区2区3区激情| 久久精品国产亚洲AV嫖农村妇女| 久久精品国产WWW456C0M| 国产精品天天影视久久综合网| 久久强奷乱码老熟女网站 | 奇米影视7777久久精品人人爽| 久久se精品一区精品二区| 精品国产99久久久久久麻豆| 国产高潮国产高潮久久久91 | 岛国搬运www久久| av国内精品久久久久影院| 久久亚洲中文字幕精品一区| 久久精品一区二区三区中文字幕| 久久久久夜夜夜精品国产| 99久久人妻无码精品系列| 国产成人久久精品一区二区三区 | 国产精品嫩草影院久久| 韩国三级大全久久网站| 久久精品视频网| 久久香蕉一级毛片| 日韩一区二区久久久久久| 夜夜亚洲天天久久| 久久久久久av无码免费看大片| 久久www免费人成精品香蕉|