n級(jí)臺(tái)階 每次走1級(jí)或2級(jí) 動(dòng)態(tài)規(guī)劃如何測(cè)試是否超時(shí)?
動(dòng)態(tài)規(guī)劃如何測(cè)試是否超時(shí)?了解什么是動(dòng)態(tài)編程以及何時(shí)使用它。設(shè)置存儲(chǔ)狀態(tài)轉(zhuǎn)換方程超級(jí)樓梯有兩種方法可以一次一步爬樓梯和一次兩步爬樓梯。有多少方法可以爬到第n步。讓狀態(tài)DP[i]為上i步的方法數(shù),DP[
動(dòng)態(tài)規(guī)劃如何測(cè)試是否超時(shí)?
了解什么是動(dòng)態(tài)編程以及何時(shí)使用它。
設(shè)置存儲(chǔ)狀態(tài)轉(zhuǎn)換方程
超級(jí)樓梯
有兩種方法可以一次一步爬樓梯和一次兩步爬樓梯。有多少方法可以爬到第n步。
讓狀態(tài)DP[i]為上i步的方法數(shù),DP[1]=1DP[2]=1
狀態(tài)轉(zhuǎn)移方程DP[i]=DP[i-1]DP[i-2]//上一步和兩步
用這個(gè)遞歸公式,我們不需要遞歸求解。(遞歸開銷很大
不同的路徑
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]}
高級(jí):不同路徑=障礙物長(zhǎng)度
int col=obstacleGrid[0].length
int[][]dp=new int[row][col
]if(obstacleGrid[0][0]==1){
返回0
}
對(duì)于(int i=0i<rowi){
對(duì)于(int j=0j<colj)