- Unique Paths
Medium
2384
174
Add to List
Share
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 7 x 3 grid. How many possible unique paths are there?
Note: m and n will be at most 100.
Example 1:
Input: m = 3, n = 2
Output: 3
Explanation:
From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
- Right -> Right -> Down
- Right -> Down -> Right
- Down -> Right -> Right
Example 2:
Input: m = 7, n = 3
Output: 28
思路
思路-Java】
采用动态规划。动态规划要求利用到上一次的结果,是一种特殊的迭代思想,动态规划的关键是要得到递推关系式。对于本题,到达某一点的路径数等于到达它上一点的路径数与它左边的路径数之和。也即,起点到点(i, j)的路径总数:ways[i][j] = 起点到点(i, j-1)的总数:ways[i][j-1] + 起点到点(i-1, j)总数:ways[i-1][j]。于是我们就得到递推关系式:ways[i][j] = ways[i][j-1] + ways[i-1][j]
class Solution {
public int uniquePaths(int m, int n) {
if(m ==0|| n ==0){
return 0;
}
int [][] ways = new int[m][n];//创建数组 储存路径数
for(int i =0;i<m;i++){
for(int j = 0;j<n;j++){
if(i ==0||j==0){
ways[i][j] = 1;
}
else
ways[i][j] = ways[i-1][j] +ways[i][j-1];
}
}
return ways[m-1][n-1];
}
}