zoukankan      html  css  js  c++  java
  • lintcode-114-不同的路径

    114-不同的路径

    有一个机器人的位于一个 m × n 个网格左上角。
    机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。
    问有多少条不同的路径?

    注意事项

    n和m均不超过100

    样例

    给出 m = 3 和 n = 3, 返回 6.
    给出 m = 4 和 n = 5, 返回 35.

    标签

    动态规划 数组

    思路

    使用动态规划,用二维数组 dp[i][j] 表示网格左上角到第 i 行、第 j 列有几种不同的路径
    动态转移方程为:dp[i][j] = dp[i][j-1] + dp[i-1][j]
    过程如下:

    code

    class Solution {
    public:
        /**
         * @param n, m: positive integer (1 <= n ,m <= 100)
         * @return an integer
         */
        int uniquePaths(int m, int n) {
            // wirte your code here
            if(m <= 0 || n <= 0) {
                return 0;
            }
            
            vector<vector<int> > dp(m, vector<int>(n, INT_MAX));
            for(int i=0; i<m; i++) {
                for(int j=0; j<n; j++) {
                    if(i == 0 && j == 0) {
                        dp[i][j] = 1;
                    }
                    else if(i == 0 && j > 0) {
                        dp[i][j] = dp[i][j-1];
                    }
                    else if(i > 0 && j == 0) {
                        dp[i][j] = dp[i-1][j];
                    }
                    else if(i > 0 && j > 0) {
                        dp[i][j] = dp[i][j-1] + dp[i-1][j];
                    }
                }
            }
            
            return dp[m-1][n-1];
        }
    };
    
  • 相关阅读:
    linux 和 ubuntu 修改主机名
    Linux删除用户
    ubuntu更新源
    python连接mysql
    用于迭代器的yield return
    Tuple类型
    Action 和 Func
    用iDSDT制作声显卡DSDT
    C#“同步调用”、“异步调用”、“异步回调”
    读懂IL代码就这么简单
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7202059.html
Copyright © 2011-2022 走看看