每次體會算法都有新的感受,刷題越多,對算法的理解感受也就越深入。算法
下面咱們來從新體會下分治法,動態規劃,貪心法,遞歸的理解。數組
1.分治法:ide
將問題分紅單獨的階段,每一個階段互相不干擾很獨立,如10米長的木棍,切成10段,每段去解決每一段的問題。(階段沒有關係)優化
2.貪心法遞歸
站在全局的角度,也是將問題堪稱分爲多個階段,只不過階段和階段之間有必定的遞進關係,如從5毛,1元,2毛,1毛,2元中,去找最少的錢幣構成10塊錢。首先是站在全局的角度,先從中取其最大值,爲第一階段,而後在從剩餘的當中在找最大值,構成第二階段。。。。。。如此往復,這就是貪心法。it
3.動態規劃class
是階段和階段之間有重複,舉例說明:求一個數組的最長遞增子序列。假設數組有10個元素,那麼如何求解呢?將10個元素劃分紅10個階段,第一個階段,從第一個元素中求解,第二個階段在第一個階段求其解,第三個階段在第一個,第二個階段綜合的基礎上求解,第四個階段在第1,2,3個階段求其解,最後。。。。第k個階段在第1,2....k-1個階段求其最優解。基礎
4.遞歸算法搜索
我的感受和動態規劃反着來的樣子,有點像,問題規模爲10,轉化爲問題規模爲9的問題,,問題規模爲9的問題,轉化爲8.。。。。。di
5.回溯法和分支限界法
都屬於組合優化問題,就是按照過程向下面去尋找最優解,在尋找最優解的過程,不斷的剪取枝條,來減小搜索狀況。不行就換思路。