2016 - 2024

感恩一路有你

n级台阶 每次走1级或2级 动态规划如何测试是否超时?

浏览量:1599 时间:2021-03-11 15:40:25 作者:admin

动态规划如何测试是否超时?

了解什么是动态编程以及何时使用它。

设置存储状态转换方程

超级楼梯

有两种方法可以一次一步爬楼梯和一次两步爬楼梯。有多少方法可以爬到第n步。

让状态DP[i]为上i步的方法数,DP[1]=1DP[2]=1

状态转移方程DP[i]=DP[i-1]DP[i-2]//上一步和两步

用这个递归公式,我们不需要递归求解。(递归开销很大

不同的路径

DP[i][J]是单元格(i,J)的方法数,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

}

对于(int i=0i<rowi){

对于(int j=0j<colj)

n级台阶 每次走1级或2级 n个台阶 每次爬1或2或3 n个楼梯每次一个或2个

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。