62.不同的路径
2018-03-28 本文已影响10人
第四单元
题目
机器人位于一个m*n网络的左上角,在(0,0)位置start,机器人每次只能向下或者向右移动一步。机器人视图达到网格的左下角(m-1,n-1)位置,问有多少条不同路径。
思路
动态规划思想
定义状态
dp[i][j] = 机器人到达(i,j)位置的路径数
状态转移
dp[i][j] = dp[i-1][j] + dp[i][j-1] (i,j不超边界)
初始化
首行、首列所有位置都只有一条路径。
dp[i][0] = 1;
dp[o][j] = 1;
AC的代码
class Solution {
public int uniquePaths(int m, int n) {
int[][] dp = new int[m][n];
for(int i = 0; i < m; i++)
dp[i][0] = 1;
for(int j = 0; j < n; j++)
dp[0][j] = 1;
for(int i = 1; i < m; i++)
for(int j = 1; j < n; j++) {
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
return dp[m-1][n-1];
}
}