n级台阶 每次走1级或2级 动态规划如何测试是否超时?
动态规划如何测试是否超时?
了解什么是动态编程以及何时使用它。
设置存储状态转换方程
超级楼梯
有两种方法可以一次一步爬楼梯和一次两步爬楼梯。有多少方法可以爬到第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个
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。