• <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 田兵 閱讀(1695) 評論(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年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            導航

            統計

            常用鏈接

            留言簿(2)

            隨筆分類(65)

            隨筆檔案(65)

            文章檔案(2)

            ACM

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            亚洲精品无码久久久久AV麻豆| 欧美亚洲国产精品久久蜜芽| 精品无码久久久久国产动漫3d| 久久精品一本到99热免费| 欧美一区二区三区久久综合| 色欲久久久天天天综合网 | 久久久久无码专区亚洲av| 亚洲欧美成人久久综合中文网| 99久久99久久精品国产片果冻| 狠色狠色狠狠色综合久久| 亚洲欧洲久久av| 99久久国产亚洲高清观看2024| 东方aⅴ免费观看久久av| 中文字幕亚洲综合久久2| 久久久久人妻一区精品性色av| 久久伊人色| 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 久久久久亚洲Av无码专| 免费一级欧美大片久久网| 久久久久久午夜成人影院| 一级做a爰片久久毛片毛片| 国产精品成人99久久久久91gav| 狠狠色婷婷久久综合频道日韩 | 亚洲国产精品婷婷久久| 一本一本久久A久久综合精品| 精品水蜜桃久久久久久久| 国产精品美女久久久久久2018| 欧美粉嫩小泬久久久久久久| 办公室久久精品| 狠狠色丁香久久综合婷婷| 国产精品久久久久久久久| 少妇久久久久久被弄高潮| 久久久久久国产精品无码下载| 亚洲精品久久久www| 思思久久好好热精品国产| 久久九九青青国产精品| 精品人妻久久久久久888| 国产亚洲色婷婷久久99精品| 久久久久久亚洲AV无码专区| 国产精品久久久久久搜索| 久久国产精品国产自线拍免费 |