一、具有的特徵
1.問題具有多階段性決策的特徵
2.每一階段有相應的「狀態變數」。
3.不同決策導致下一階段不同的狀態
4.多個階段的最優解的遞迴,子問題與原問題有同結構。
階段:按空間或時間順序對問題的求解劃分階段。
狀態:不同事物有不同性質,用不同的狀態來刻畫。
決策:對每個階段做出某種選擇性的操作。
狀態轉移方程:用數學公式描述與階段相關的狀態間的演變規律。
二、解題步驟
1.是否具有動態規劃特徵。
2.分階段
3.建立狀態轉移方程。
4.找邊界條件。
5.將已知邊界條件帶入。
6.遞推求解。
總結:上課老師講了最長單調子串行模型,最長公共子串行模型,最大欄位和模型,矩陣模型裡的一種。做題遇到了多個公升級版的題。反恐訓練營(lcs)模板是加一上公升到加的權值不一樣。機械人路線問題把模板兩個選擇的上公升到超多個的選擇。動態規劃好難,感覺就是貪心加遞迴。每次做這題我感覺最關鍵的就是題目的量要用什麼表示出來,就比如說最長單調子串行用乙個一維陣列來表述段長,蟲子爬樹那一題用二維陣列表述時間和第幾棵樹。如果這個都沒有選擇對就別說動態方程了。對於動態定義陣列比如dp[i][j]一維表示時間二維表示棵樹想的時候只把ij當成第幾分鐘第幾課樹。剛開始我一直在想為什麼這麼表示可以轉牛角尖,亂想一堆東西出來,就越來越看不懂。所以簡單點想就好了。老師今天說了指數可以用對數來轉化,那我如果遇到其他不好表達的數那我可以用一些數學公式來轉化資料。那個相同字元最大子矩陣和,剛開始我多給了定義了陣列範圍,超出記憶體範圍,一直找不到錯誤,改了好多次,上網提交別人的**,就是看不出**錯了,以後給定範圍,還是不要超出定義範圍太多。動態的題都好難做,剛開始做題就是無頭蒼蠅,多做幾題之後就有了一點感覺,還是要多刷題,希望自己能堅持吧。
第四周作業
第四周實驗作業 1.完成課本每乙個程式設計題。要求先畫出流程演算法圖或n s圖,然後程式設計實現,有可能的話使用兩種以上方法 1.1求自然對數e的近似值 include using namespace std int main cout 1.2求圓周率 的近似值 include using name...
第四周作業
實驗作業1.完成課本每乙個程式設計題。要求先畫出流程演算法圖或n s圖,然後程式設計實現,有可能的話使用兩種以上方法 2.程式設計求 百錢百雞 問題。雞翁一值錢五,雞母 一值錢三,雞雛三值錢一。百錢買百雞,問雞翁 雞母 雞雛各幾何?3.程式設計輸入乙個整數,計算它是幾位數字,分別輸出每一位數字,並輸...
第四周作業
實驗作業1.完成課本每乙個程式設計題。要求先畫出流程演算法圖或n s圖,然後程式設計實現,有可能的話使用兩種以上方法 2.程式設計求 百錢百雞 問題。雞翁一值錢五,雞母 一值錢三,雞雛三值錢一。百錢買百雞,問雞翁 雞母 雞雛各幾何?3.程式設計輸入乙個整數,計算它是幾位數字,分別輸出每一位數字,並輸...