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]
过程如下:
lintcode-114-不同的路径

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];
    }
};

相关文章:

  • 2021-09-08
  • 2021-06-13
  • 2021-07-14
  • 2021-12-26
  • 2021-03-27
猜你喜欢
  • 2021-07-30
  • 2022-03-05
  • 2021-12-20
  • 2021-07-05
  • 2021-09-08
  • 2021-05-02
相关资源
相似解决方案