A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).
The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).
The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).
How many possible unique paths are there?
思路:
(1)对于在起始位置所在的行的每一个位置,由于只能向下或者向右移动,因此要想到达这一行所在的其他位置,只能选择向右走,路径也就是1条
(2)对于起始位置所在列的每个位置由于只能向下走到达,路径也是1条
(2)对于i>0&&j>0的位置dp[i][j]到达它所在的位置可能是其上方的位置或者左方位置过来,即dp[i][j]=dp[i-1][j]+dp[i][j-1](m>i>0&&n>j>0)
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>>dp(m,vector<int>(n));
//第一行的位置,想过去只有一条路径 只能向right的方向走
for(int i=0;i<n;i++) dp[0][i]=1;
//第1列的位置,想要过去也只有一个路径 只能向down的方向走
for(int i=0;i<m;i++) dp[i][0]=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];
}
};