在學習了眾多搜尋的方式後,不由感慨。啊,太巨了!!!今天huayucaiji我就給大家講一講c++搜尋的心得吧!!!
深度優先搜尋
廣度優先搜尋
迭代加深搜尋
乙個乙個講吧!!!
深度優先搜尋(下簡稱「深搜」),簡稱dfs。是簡潔明瞭的搜尋方式,以遞迴的方式實現。比較簡單
好,廢話不多說,讓我們看一道題全排列問題
原題見洛谷~~~~~~~~
解題思路:
首先想一想,是可以寫n次迴圈巢狀,把所有數枚舉一遍的(偽**):
for
(int i=
1;i<=n;i++
)}
但作為蒟蒻,我還不會直接在主函式裡寫n次迴圈巢狀。怎麼辦呢??可以用遞迴,**如下
void
qiantao
(int n)
qiantao
(n-1);
}
很簡單,但是如何運用到本題裡來呢???可以用乙個bool used[i];來記錄第i個數是否被用過然後利用回溯的方法解題。這其實就是深搜的思想,是不是非常簡單?**如下:
void
permutate
(int left)
cout/回車
return;}
//重要的深搜部分來了
for(
int i=
1;i<=n;i++)}
//結束啦!!!
}
全**如下
#include
using
namespace std;
bool used[10]
;int n,ans[10]
;void
permutate
(int left)
cout
for(
int i=
1;i<=n;i++)}
}int
main()
這個題很簡單吧,可以累計信心,是初學者成長必經之路。
下面,來看一道真正的 深搜的題(不知道難不難~~~~)
這道題十分經典,來看看如何用dfs的方式解決。
首先找出乙個數(最好從1開始,有序列舉),然後找出沒有用過的數字並且與找出的數之和為質數,作為下一層遞迴的引數,進行求解。最後確定首尾和為質數即可輸出。還是非常1簡單易懂的!!!
遞迴**不難,如下:
void
dfs(
int begin,
int n,
int last)
for(
int i=
1;i<=num;i++
) cout<<
"\n"
;return;}
for(
int i=
1;i<=num;i++)}
}
收尾了。
深搜非常簡單,但要多做題練手,否則不熟練在運用時會出大問題哦!
學習心得 python學習心得
自從來了深圳工作以後,尤其是屢屢面試碰壁以後。發現其實自己的知識面很窄,做筆試題的時候絞盡腦汁還是漏洞百出,並不是不會做,而是出現一大堆不該有的失誤。每次被問道,對資料庫了解嗎?說一大堆看起來很高階的東西 好啊,那我們寫幾個sql語句吧。馬上完蛋了,沒了手冊關鍵字都記不起。了解哪幾種指令碼語言,sh...
學習心得 我的學習心得
我是乙個已經步入中年的70後,離開校園已經20年了,因為當年的政策因素而未能圓我的大學夢,在20年的工作過程中總是因為缺少一張大學文憑而失去了很多機會,曾經也考慮過自考,但是乙個人去面對的時候總感覺心有餘而力不足。2018年3月份偶然讓我認識了尚德,原來自考還可以這樣學習。一直懷疑自己年紀大了記憶力...
django全文搜尋學習心得(四)sphinx篇
很遺憾,haystack sphinx 沒有文件可以檢視,菜鳥們都安息了。還好有django sphinx 這玩意挺好!安裝 django sphinx 這個現在已經是非常穩定的了,所以github上邊也不會再有任何新的發行版了,穩定才是最好的保障。所以直接pip install django sp...