當前位置:編程學習大全網 - 編程語言 - c語言常用算法有哪些

c語言常用算法有哪些

0) 窮舉法

窮舉法簡單粗暴,沒有什麽問題是搞不定的,只要妳肯花時間。同時對於小數據量,窮舉法就是最優秀的算法。就像太祖長拳,簡單,人人都能會,能解決問題,但是與真正的高手過招,就頹了。

1) 貪婪算法

貪婪算法可以獲取到問題的局部最優解,不壹定能獲取到全局最優解,同時獲取最優解的好壞要看貪婪策略的選擇。特點就是簡單,能獲取到局部最優解。就像打狗棍法,同壹套棍法,洪七公和魯有腳的水平就差太多了,因此同樣是貪婪算法,不同的貪婪策略會導致得到差異非常大的結果。

2) 動態規劃算法

當最優化問題具有重復子問題和最優子結構的時候,就是動態規劃出場的時候了。動態規劃算法的核心就是提供了壹個memory來緩存重復子問題的結果,避免了遞歸的過程中的大量的重復計算。動態規劃算法的難點在於怎麽將問題轉化為能夠利用動態規劃算法來解決。當重復子問題的數目比較小時,動態規劃的效果也會很差。如果問題存在大量的重復子問題的話,那麽動態規劃對於效率的提高是非常恐怖的。就像鬥轉星移武功,對手強它也會比較強,對手若,他也會比較弱。

3)分治算法

分治算法的邏輯更簡單了,就是壹個詞,分而治之。分治算法就是把壹個大的問題分為若幹個子問題,然後在子問題繼續向下分,壹直到base cases,通過base cases的解決,壹步步向上,最終解決最初的大問題。分治算法是遞歸的典型應用。

4) 回溯算法

回溯算法是深度優先策略的典型應用,回溯算法就是沿著壹條路向下走,如果此路不同了,則回溯到上壹個

分岔路,在選壹條路走,壹直這樣遞歸下去,直到遍歷萬所有的路徑。八皇後問題是回溯算法的壹個經典問題,還有壹個經典的應用場景就是迷宮問題。

5) 分支限界算法

回溯算法是深度優先,那麽分支限界法就是廣度優先的壹個經典的例子。回溯法壹般來說是遍歷整個解空間,獲取問題的所有解,而分支限界法則是獲取壹個解(壹般來說要獲取最優解)。

  • 上一篇:如何:處理屏幕旋轉
  • 下一篇:C語言與JAVA
  • copyright 2024編程學習大全網