做題筆記 DFS深搜(洛谷P1162填塗顏色)

2021-09-26 06:20:42 字數 845 閱讀 5958

這道題目在洛谷訓練場上分類是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,如果接成...