動態規劃算法其實與分治法有相通性,都是將待解決的問題分解成若干子問題,先求子問題,再結合這些子問題的解獲得原問題的解。不過,不一樣之處在於,適用動態規劃算法的問題,經分解後獲得的子問題每每不是相對獨立的。用分治法來解決問題,每每有些子問題會被重複計算了許屢次。而動態規劃算法的基本思想就是無論該子問題之後是否被用到,只要它被計算過,就將其結果填入表中,這樣即可以免大量的重複計算,從而獲得多項式時間算法。算法
動態規劃的基本步驟爲:一、找出最優解的性質,並刻畫其結構特徵;二、遞歸地定義最優值;三、以自底向上的方式計算最優值;四、根據計算最優值時獲得的信息,構造最優解。編程
不過有時最好也能夠避免遞歸,其步驟爲:一、肯定表的維數;二、肯定填表範圍;三、肯定按什麼順序填表(自左向右/自下而上)。blog
結對編程能夠及時進行更好的想法的提出與補充,也能幫助本身更好的理解算法的原理,明白其計算過程。咱們一般是在週一毛概課、週三筆譯課下課後,利用吃飯前的一段時間進行討論和編程答題。遞歸