题目描述:
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.
分析:动态规划思想:由于每次只能向下和向右走,那么可以得出从左上角(源起点)到第一行和第一列的每个格子的路径数目均为1,
由此可以地推得出从源起点到其他每个格子的不同路径总数。
即源起点到非第一行和第一列的格子的路径数等于源起点到该格子的左边和上边的格子路径数之和,
递推公式为:vec[i][j] = vec[i-1][j] + vec[i][j-1],其中i属于(0,m),j属于(0,n)。
以下是C++实现代码:其中vec是存放的每个格子对应的路径数,最后的vec[m-1][n-1]即为右下角的终点
/*2ms*/
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int> > vec(m,vector<int>(n,1));
for(int i = 1; i != m; i++)
{
for(int j = 1; j !=n; j++)
{
vec[i][j] = vec[i-1][j] + vec[i][j-1];
}
}
return vec[m-1][n-1];
}
};