深度搜尋 深度搜尋解決矩陣搜尋問題(水窪數計算)

2021-10-24 10:10:17 字數 1021 閱讀 8404

一、題目

有乙個大小為n*m的園子,雨後積起了水。八連通的計稅被認為是連線在一起的。請求出園子裡總共有多少水窪?

(八連通指的是下圖中相對w的*的部分)

二、輸入與輸出

輸入園子的積水矩陣圖,w表示積水,.表示沒有積水

輸出水窪個數,為3

如圖三個水窪為紅色圈起的部分:

三、演算法分析與實現

實現思路:首先需要明白構成同乙個水窪的條件,即如果能夠成同乙個水窪,那麼該區域中的所有積水點是連通的(八連通),因此為了尋找園子中的積水連通區域,我們需要在整個園子中進行搜尋。

為了能夠全面搜尋,我們遍歷整個園子,每遇到乙個積水點,則就從該積水點開始搜尋出所有與之連通的積水點,為了能夠全面搜尋,我們採用深度優先搜尋,並將經過的積水點進行標記(這裡我們標記成』.』),避免出現環路。

public

class

algorithmcenter200714,,

,,,,

,,,}

;private

int h =

> a.

getlength(0

);//10

private

int w =

> a.

getlength(1

);//12

///

/// 計算水窪個數

///

///

///

public

intcaluatepuddlecount()

}}return count;

}private

void

dfs(

int x,

int y)}}

}

深度優先搜尋 廣度優先搜尋(解決小哈)

問題省略 思路 讓小哼往右邊走,直到走不通的時候再回到這裡,再去嘗試另乙個方向。規定乙個順序,按順時針方向來嘗試 即按照右 下 左 上的順序去嘗試 先 檢查小哼是否已經到達小哈的位置,如果沒有到達則找出下一步可以走的地方。為了解決這個問題,此處dfs 函式只需要維護3個引數,分別是x座標 y座標 以...

深度優先搜尋解決全排列問題

題目 假如有編號為1 2 3的3張撲克牌和編號為1 2 3的3個盒子。現在需要將這3張撲克牌分別放到3個盒子裡,並且每個盒子有且只能放一張撲克牌。那麼一共有多少種不同的排法?及注釋 include 全域性變數,陣列元素值自動初始化為0 int a 10 充當盒子編號 int book 10 用boo...

深度優先搜尋解決八皇后問題

八皇后問題是什麼 八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象棋雜誌...