前言
動態規划是很重要的一個知識點,大大小小的比賽總會有一兩道DP題,足以說明動態規划的重要性。
動態規划主要是思想,並沒有固定的模板,那么,怎么判斷題目是不是動態規划呢?
DP題一般都會滿足三個條件:子問題重疊、無后效性、最優子結構性質。
動態規划把原問題看作若干個重疊子問題,每個子問題的求解過程都是一個階段,
動態規划要求當前階段不會被后續階段影響(即已經解決的子問題不被后續子問題影響),這便是無后效性。
一般情況下,動態規划在解決最優問題時,每個階段的最優解應該由前面階段的最優解導出,這便是最優子結構性質。
知道題目是動態規划后,怎么解決呢?
解決動態規划問題,重點在於狀態與狀態轉移方程:
顧名思義,狀態通常指某種情況下目標的某種情況,要注意邊界;
狀態轉移方程指把當前階段的狀態轉移到下一個階段的狀態的方程。
狀態與狀態轉移方程因題而異,想要熟練的定義出狀態、得出狀態轉移方程,最主要的方法便是多刷題,DP題做多了自然就知道如何定義了。
具體的各類DP與題目如下。
目錄
本蒟蒻在這里總結了一下動態規划的部分知識點,后續會不定期更新。