深度優先搜尋的用法 lake counting

2022-09-23 11:12:11 字數 1041 閱讀 5338

深度優先搜尋的用法——lake counting

問題主題:lake counting

問題描述:

有乙個大小為n*m的園子,雨後積了很多水。八連通的積水被認為是在一起的。請求出園子裡共有多少個水窪?(八連通是指下圖中相對+的*部分)

++++*+

+++限制條件:

n,m <= 100

樣例:輸入n=10, m=12

園子如下圖(『+』表示積水,』*』表示沒有積水)

+********++*

*+++*****+++

****++***++*

*********++*

*********+**

**+******+**

*+*+*****++*

+*+*+*****+*

*+*+******+*

**+*******+*輸出3

從任意的』+』開始,不停地把鄰接的部分用』*』代替,一次dfs(深度優先遍歷)遍歷後,與初始的這個+所連線的所有+都會被替換成*,因此直到圖中沒有+為止,總共進行dfs的次數即為積水的次數。

c++#include "iostream"

using namespace std;

const int n = 10;

const int m = 12;

char garden[n][m+1] = ;

void dfs(int x, int y);

void solve() }}

cout << count << endl;}

void dfs(int y, int x) }}

} int main()

j**a

/*** user: luoweifu

* date: 14-1-7

* time: 下午4:53

*/public class lakecounting ;

public void solve() }}

} public static void main(string args)

}

廣度優先搜尋 深度優先搜尋

前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...

廣度優先搜尋,深度優先搜尋

深度優先搜尋 depth first search 簡稱dfs。最直觀的例子就是 走迷宮 廣度優先搜尋 每個頂點都要進出一遍佇列,每個邊也都會被訪問一次,所以 時間複雜度o v e 主要消耗記憶體的是visited prev陣列 queue佇列,所以 空間複雜度o v 深度優先搜尋 每條邊最多會被訪...

深度優先搜尋 廣度優先搜尋

深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 package com.neusoft.data.structure 深度優先搜尋 廣度優先搜尋 通過鄰接矩陣對圖進行深搜和廣搜 public class dfsbfs 初始化 邊 mmatrix new int vlen vlen for...