一、题目:62. 不同路径
二、题目解析:
题目解析:该题可以用动态规划来解决,我们用f(i,j)表示左上角机器人到达(i,j)坐标路径的数量,注意机器人每次只能向下或向右移动,则状态转移方程就是f(i,j) = f(i-1,j)+ f(i,j-1),计算完后返回右下角的坐标值即可,f(m-1,n-1)
解题步骤:
- 定义一个状态数组
- 初始化第一行和第一列路径数量为 1 对照图理解
- 依次更新剩余格子状态,每个格子只能从上边和左边过来
图示帮助理解:
三、代码如下:
public int uniquePaths(int m,int n){
//定义一个状态数组
int[][] dp = new int[m][n];
//初始化第一行和第一列路径数量为 1
for(int row = 0; row < n; row++){
dp[0][row] = 1;
}
for (int col = 0; col < m; col++) {
dp[col][0] = 1;
}
for(int row=1;row<m;row++){
for(int col=1;col<n;col++){
//状态转移方程
dp[row][col] = dp[row-1][col] + dp[row][col-1];
}
}
//返回终点值
return dp[m-1][n-1];
}
四、测试
五、结束