LeetCode 62 Unique Paths DP
There is a robot on an m x n
grid. The robot is initially located at the top-left corner (i.e., grid[0][0]
). The robot tries to move to the bottom-right corner (i.e., grid[m - 1][n - 1]
). The robot can only move either down or right at any point in time.
Given the two integers m
and n
, return the number of possible unique paths that the robot can take to reach the bottom-right corner.
The test cases are generated so that the answer will be less than or equal to 2 * 10^9
.
Solution
\(dp[i][j]\) 表示到位置 \(i,j\) 的方案数,很明显的转移方程:
\[dp[i][j] = dp[i-1][j]+dp[i][j-1]
\]
对于初始化,由于只能右或者下,所以边界的方案数都为 \(1\):
\[dp[i][0] = dp[0][j] = 1
\]
点击查看代码
class Solution {
public:
int uniquePaths(int m, int n) {
long long dp[105][105];
if(m==1&&n==1)return 1;
for(int i=0;i<m;i++)dp[i][0]=1;
for(int j=0;j<n;j++)dp[0][j]=1;
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
if(i==0 && j==0)continue;
dp[i][j] = dp[i-1][j]+dp[i][j-1];
}
}
return (dp[m-1][n-1]);
}
};