62. Unique Paths

題目

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了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容