這道題目在洛谷訓練場上分類是bfs廣度優先搜尋,但是由於我只學了dfs,所以只能用dfs做了(好像dfs做更簡單…)
這道題思路如下:
1. 定義兩個二維陣列,乙個用來輸入,另乙個用來操作,不然不好輸出
2. 從(0,0)開始dfs,越界或者不等於0(不等於0就是撞牆了)就退出,否則將該點置為1(其實就相當於染色)
3. 輸出時如果依舊為0的(未染色的說明沒有搜到,也就是被1給圍住了),輸出2,否則輸出原陣列
我們來看**
#includeusing namespace std;
int fz[35][35],n,a[35][35]; //fz是用來輸入的,a用來操作
int fx[5]=,fy[5]=; //四個方向,第乙個(0,0)不需要的
void dfs(int x,int y) //判斷是否越界,是否是牆,是否搜過
a[x][y]=1; //置為1,代表搜尋過了
for(int i=1;i<=4;i++)
} int main()
} dfs(0,0); //開始搜
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j]==0) cout<<2<
else cout已經有兩道dfs了,我爭取下一期做題筆記更新bfs的題
end
洛谷P1605迷宮(深搜dfs)
題目背景 給定乙個n m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和終點座標,問 每個方格最多經過1次,有多少種從起點座標到終點座標的方案。在迷宮中移動有上下左右四種方式,每次只能移動乙個方格。資料保證起點上沒有障礙。題目描述 無輸入格式 第一行n m和t,n為行,m為列,t為障礙總...
洛谷P1036 深搜
原題目 給定n個數字裡面選擇k個數字進行操作,使用遞迴操作。也類似於深搜。include using namespace std int ans 0,n,k,a 25 bool prime int x return true void rec int start,int count,int sum ...
洛谷 P1019 單詞接龍 模擬,dfs深搜
分析ac code 題目傳送門 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beastbeast和astonishastonish,如果接成...