防禦洪水 dfs深度搜尋

2021-08-30 04:27:49 字數 1146 閱讀 5945

題目描述

oibh被突來的洪水淹沒了》 .< 還好oibh總部有在某些重要的地方起一些圍牆,用*號表示,而乙個封閉的*號區域洪水是進不去的……現在給出oibh的圍牆建設圖,問oibh總部沒被淹到的重要區域(由" 0" 表示)有多少。

輸入

第一行是兩個數,x和y(x,y< =500) 第二行及以下是乙個由*和0組成的x*y的圖。

輸出

輸出沒被水淹沒的oibh總部的「0」的數量。

樣例輸入

5 4

00000

00*00

0*0*0

00*00

5 5*****

*0*0*

**0**

*0*0*

*****

輸出樣例

1

5

思路

首先將連通的區域進行標記,然後遍歷剩餘未標記累積求和。個人認為此題還是比較簡單。

參考**

#include #define max_len 505

using namespace std;

int n,m;

char map[max_len][max_len];

int dir[8][2] = ,,,,};

void dfs(int x,int y)

if(map[x][y] == '0')

for(int i=0;i<4;i++)//繼續從其他方向搜尋

return ;}

int main()

int count = 0;

for(int i=0;i}

}for(int i=0;i}

}cout<}

return 0;

}

深度優先搜尋DFS

作為搜尋演算法的一種,dfs對於尋找乙個解的 np 包括npc 問題作用很大。但是,搜尋演算法畢竟是 時間複雜度是o n 的階乘級演算法,它的效率比較低,在資料規模變大時,這種演算法就顯得力不從心了。關於深度優先搜尋的效率問題,有多種解決方法。最具有通用性的是剪枝 prunning 也就是去除沒有用...

深度優先搜尋 DFS

深度優先搜尋 縮寫dfs 有點類似廣度優先搜尋,也是對乙個連通圖進行遍歷的演算法。它的思想是從乙個頂點v 0開始,沿著一條路一直走到底,如果發現不能到達目標解,那就返回到上乙個節點,然後從另一條路開始走到底,這種盡量往深處走的概念即是深度優先的概念。你可以跳過第二節先看第三節,還是引用上篇文章的樣例...

深度優先搜尋(dfs)

深度優先搜尋的一般步驟 1 從頂點v出發,訪問v。2 找出剛才訪問過的頂點的第乙個未被訪問的鄰接點,訪問該頂點。以該頂點為新頂點,重複此步驟,直到剛訪問的頂點沒有沒有未被訪問過的鄰接點為止。3 返回前乙個訪問過的仍有未被訪問過的鄰接點的頂點,找出該頂點的下乙個未被訪問過的鄰接點,訪問該頂點。4 重複...