There are numbers in each grid in the picture,
which stand for the number of unique paths from Start to the grid.
Observing the picture,
we can easily find that,
for any i,j>0,
dp[i][j]=dp[i-1][j]+dp[i][j-1].
So I declared a 2D int array "dp" (Here I use vector<vector<int>>) to store the number of each grid.
At first, I put "1" into each grid of the first row and the first column,
Because along them, there is only 1 path.
Then I start looping from dp[1][1] to dp[m-1][n-1].
At last, the answer of the question is in the dp[m-1][n-1]
This is "Dynamic Programming".
The Runtime of the program is 0 ms.
The length of the code is 266 Bytes.
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> dp(m,vector<int>(n,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];
}
};