題目大意是給你一張n×m的迷宮,大寫字母a-e代表的是門,小寫字母a-e對應的是其大寫字母門的鑰匙,如果一扇門在一張圖里有多個鑰匙,那麼必須都找到這些鑰匙才能開啟這扇門,x代表是牆壁,『.』代表此處為空可以行走,詢問是否可以從s走到g。
剛開始思路想錯了,想著乙個點最多被訪問4次,然後就自信的寫完了,手出了組資料,好像不大對。。然後就開始想想想,最後還是沒有想到什麼比較好的搜尋方式,,只能看題解了。看了黃學長的部落格,恍然大悟(智商太低了),這道題不用回溯,每個點訪問一遍就行,如果找到一扇門的所有鑰匙且可以走到這扇門前,就直接蹦到門的座標再dfs,因為不可能出現兩個a門這種情況,所以不用擔心出錯。
還是要多練練搜尋啊!!
**如下
/*my convictions will not falter.*/
#include
#include
#include
#include
#include
using
namespace
std;
const
int n=25,m=6;
const
int movx[5]=,movy[5]=;
int num[m],key[m],s[n][n],sx,sy,gx,gy,can,dorx[m],dory[m];
int vis[n][n],pd[m];
void read(int x,int y)
}return ;
}void dfs(int x,int y)
else
if(!vis[tx][ty]&&s[tx][ty]>=6&&s[tx][ty]<=10)
else
if(!vis[tx][ty]&&s[tx][ty]==0)
else
if(tx==gx&&ty==gy)
}}int main()
while(1);
return
0;}
poj 2157 Maze 列舉排列 dfs搜迷宮
題意 給乙個迷宮,求是否可從s走到g,迷宮中有門和鑰匙,要獲得相應種類的所有鑰匙才能開啟該種門 比如獲得所有a才能開啟a 分析 列舉開啟門的順序,搜路徑即可。poj 2157 sep9 include includeusing namespace std const int maxn 32 char...
解題報告 Maze
眾所周知 怎麼又是眾所周知 仙劍的迷宮是難走的要命,某人就在仙四的女羅巖困了很長時間。我們可以把女羅巖的地圖抽象成n n 的地圖,我們現在在 1,1 處,而出口在 n,n 每次行動只能向上下左右移動一格。圖中有 m個機關,只有開啟某個機關之後,與該機關相對應的地方才可以行走。當然,地圖中還會有小怪獸...
poj解題報告 1328
不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...