zoukankan      html  css  js  c++  java
  • LeetCode62. 不同路径


    由于机器人只可以向右和向下移动,所以我们要到第i行第j列,只可以由第i-1行第j列和第i行第j-1列移动一步得到,因此要到第i行第j列的方案数就是到第i-1行第j列的方案数和到第i行第j-1列的方案数之和。如果用dp[i][j]表示到第i行第j列的方案数,我们可以得到状态转移方程:dp[i][j] = dp[i - 1][j] + dp[i][j - 1],得到状态转移方程后,我们还需要做一些初始化方便递推。可以发现第0行和第0列的所有方案数都是1(只可能是从起点开始不断向下或向右移动得到). 这样我们递推的时候只需从第1行第1列开始递推到第m-1行n-1列。

    class Solution {
    public:
        int uniquePaths(int m, int n) {
            vector<vector<int>> dp(m, vector<int>(n));
            for(int i = 0; i < m; ++i) {
                dp[i][0] = 1;                        //到第0列的所有格子都只有一种路径(向下)
            }
            for(int i = 0; i < n; ++i) {
                dp[0][i] = 1;                        //到第0行的所有格子都只有一种路径(向右)
            }
            for(int i = 1; i < m; ++i) {
                for(int j = 1; j < n; ++j) {
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];       //到第i行第j列只可能是从第i - 1行第j列或第i行第j - 1列移动一步得到
                                                                  //因此到第i行第j列的方案数就是第i - 1行第j列的方案数和第i行第j - 1列的方案数之和      
                }
            }
            return dp[m - 1][n - 1];                  //右下角是第m - 1行第n - 1列
        }
    };
    
  • 相关阅读:
    C++库---json
    C++之单例模式
    mysql之字段(整形、字符串等)
    C++之数据类型,容器
    C++文件操作,判断两个文件内容是否相等(被修改)
    (转)mysql之index(索引)
    Django中的日期和时间格式 DateTimeField
    有关Django的smallDemo
    mysql 快速生成百万条测试数据
    从输入URL到页面加载发生了什么
  • 原文地址:https://www.cnblogs.com/linrj/p/13206523.html
Copyright © 2011-2022 走看看