国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

DFS學習歸納總結

2019-11-06 06:18:47
字體:
來源:轉載
供稿:網友

看了幾次題,dfs還是用的比較多的一種算法,上次做阿里的編程題也是深搜加剪枝。太久沒寫了,大學學的一點皮毛也都荒廢了。

DFS

這篇博客寫的很好,偽代碼也清晰明了:深度優先搜索(DFS) 算法入門

c++代碼

/** * DFS核心偽代碼 * 前置條件是visit數組全部設置成false * @param n 當前開始搜索的節點 * @param d 當前到達的深度,也即是路徑長度 * @return 是否有解 */ bool DFS(Node n, int d){ if (d == 4){//路徑長度為返回true,表示此次搜索有解 return true; } for (Node nextNode in n){//遍歷跟節點n相鄰的節點nextNode, if (!visit[nextNode]){//未訪問過的節點才能繼續搜索 //例如搜索到V1了,那么V1要設置成已訪問 visit[nextNode] = true; //接下來要從V1開始繼續訪問了,路徑長度當然要加 if (DFS(nextNode, d+1)){//如果搜索出有解 //例如到了V6,找到解了,你必須一層一層遞歸的告訴上層已經找到解 return true; } //重新設置成未訪問,因為它有可能出現在下一次搜索的別的路徑中 visit[nextNode] = false; } //到這里,發現本次搜索還沒找到解,那就要從當前節點的下一個節點開始搜索。 } return false;//本次搜索無解 }

算法中要注意: 要有出口(搜索到滿足條件的時候返回); 利用visit數組標記,訪問一個點就將其先標記再訪問; 當前遞歸返回時,如果沒有返回true,要將之前標記過得點重置。

關于搜索剪枝算法之后再補充。


上一篇:Application傳值

下一篇:disney (map模擬)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄浪县| 息烽县| 汉沽区| 北碚区| 平定县| 和龙市| 舒兰市| 南江县| 开封市| 基隆市| 醴陵市| 上思县| 荆门市| 三原县| 高雄市| 佛学| 榆树市| 惠东县| 巩义市| 嘉祥县| 庆城县| 光山县| 天等县| 抚州市| 海兴县| 东莞市| 通化市| 洛川县| 陇西县| 伊春市| 上饶县| 彰化市| 江川县| 台东市| 勐海县| 漠河县| 平南县| 永清县| 平湖市| 砚山县| 泽库县|