題目
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.
分析
用dp來做,算法復(fù)雜度O(m*n)。
- 初始條件:最后一行和最后一個一列的路徑肯定只有一條。
- 推導(dǎo)方式:其他位置的路徑數(shù)等于其右邊的路徑數(shù)目加上其下邊的路徑數(shù)目。
- 輸出數(shù)據(jù):第一個位置的路徑數(shù)。
實現(xiàn)
class Solution {
public:
int uniquePaths(int m, int n) {
int dp[m][n];
for(int i=0; i<m; i++)
dp[i][n-1] = 1;
for(int i=0; i<n; i++)
dp[m-1][i] = 1;
for(int i=m-2; i>=0; i--)
for(int j=n-2; j>=0; j--)
dp[i][j] = dp[i+1][j] + dp[i][j+1];
return dp[0][0];
}
};
思考
最喜歡這種最簡單的dp了。