找出最長連續(xù)子數(shù)組 動態(tài)規(guī)劃如何測試是否超時?
動態(tài)規(guī)劃如何測試是否超時?了解什么是動態(tài)編程以及何時使用它。設置存儲狀態(tài)轉(zhuǎn)換方程超級樓梯有兩種方法可以一次一步爬樓梯和一次兩步爬樓梯。有多少方法可以爬到第n步。讓狀態(tài)DP[i]為上i步的方法數(shù),DP[
動態(tài)規(guī)劃如何測試是否超時?
了解什么是動態(tài)編程以及何時使用它。
設置存儲狀態(tài)轉(zhuǎn)換方程
超級樓梯
有兩種方法可以一次一步爬樓梯和一次兩步爬樓梯。有多少方法可以爬到第n步。
讓狀態(tài)DP[i]為上i步的方法數(shù),DP[1]=1DP[2]=1
狀態(tài)轉(zhuǎn)移方程DP[i]=DP[i-1]DP[i-2]//上一步和兩步
用這個遞歸公式,我們不需要遞歸求解。(遞歸開銷很大
不同的路徑
DP[i][J]是單元格(i,J)的方法數(shù),DP[0][]=1DP[[0]=1
DP[i][J]=DP[i-1][J]DP[i][J-1]//向下和向右
]公共int唯一路徑(int m,int n){
]int[][
DP=New int[m][n
]for(int i=0 i< mi){
]for(int J)=0 J< N J){
]如果(I==0 | J==0)
DP[I][J]=1][否則{
DP[I][J]=DP[I-1][J]DP[I][J-1]}]}返回DP[M-1][N-1]}
高級:不同路徑=障礙物長度
int col=obstacleGrid[0].length
int[][]dp=new int[row][col
]if(obstacleGrid[0][0]==1){
返回0
}
for(int i=0i<rowi){
for(int J=0j<colj)
說明動態(tài)規(guī)劃解決什么類型問題,并舉出一個解決的實際問題?
無非是增加內(nèi)存
看到這個,每個案例都很清楚
官方賬號計算廣告生態(tài),詳細解釋
回復DP獲取PDF文件。