思路一:排列组合

var uniquePaths = function(m, n) {let res = 1;for(let i = 0; i < Math.min(m - 1, n - 1); i++) {res *= m + n - 2 - i;res /= i + 1;}return res;};
思路二:动态规划
机器人只能向右或者向下移动一步。
所以从左上到右下的走法 = 从右边开始走的路径总数 + 从下面开始走的路径总数
所以动态方程为:
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
这样就可以通过递归解决了。
而第一行和第一列时的值为
- dp[0][j] = 1
- dp[i][0] = 1
这是因为一直向下或者一直向右的话,只有一种走法
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> dp(m, vector<int>(n, 0));
for(int i = 0; i < m; i++) dp[i][0] = 1;
for(int i = 0; i < n; i++) dp[0][i] = 1;
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
};

