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来做,算法复杂度O(m*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了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容