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).
How many possible unique paths are there?
Above is a 3 x 7 grid. How many possible unique paths are there?
Note: m and n will be at most 100.
自从过年好久没有写博客了,这个算是新年后第一题吧。
这个题求多少个路径,题中说只能向右或向下,意思是只向靠近目标的方向移动。我们假设robot移动到(i,j)位置,那么robot之前的位置只能是(i-1,j)或(i,j-1),所以Paths(i,j)=Paths(i-1,j)+Pahts(i,j-1),此外需要考虑到边界情况robot在第一行或第一列时只有一种走法。代码如下:
class Solution {
public:
int uniquePaths(int m, int n) {
if(m==0||n==0) return 0;
int path[m][n]={0};
for(int row=0;row<m;row++){
for(int col=0;col<n;col++){
if(row==0||col==0)
path[row][col]=1;
else
path[row][col]=path[row-1][col]+path[row][col-1];
}
}
return path[m-1][n-1];
}
};