• leetcode 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 7 x 3 grid. How many possible unique paths are there?

    Note: m and n will be at most 100.

    Example 1:

    Input: m = 3, n = 2
    Output: 3
    Explanation:
    From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
    1. Right -> Right -> Down
    2. Right -> Down -> Right
    3. Down -> Right -> Right
    

    Example 2:

    Input: m = 7, n = 3
    Output: 28

    题目大意:

    从m乘n矩阵左上角走到右下角,每一步只能向右或向下,求共有多少条不同路径。

    递归解决:

     1 class Solution {
     2 public:
     3     vector<vector<int>> v;
     4     
     5     int solve(int m, int n) {//从(m, n)到(1, 1)有多少条路径
     6         if (m == 1 || n == 1)
     7             return 1;
     8         if (v[m][n] >= 0)
     9             return v[m][n];
    10         v[m][n] = solve(m - 1, n) + solve(m, n - 1);
    11         return v[m][n];
    12     }
    13     
    14     int uniquePaths(int m, int n) {
    15         if (m == 0 || n == 0)
    16             return 0;
    17         if (m == 1 || n == 1)
    18             return 1;
    19         v.resize(m + 1, vector<int>(n + 1, -1));
    20         return solve(m - 1, n) + solve(m, n - 1);
    21     }
    22 };

     迭代:

     1 class Solution {
     2 public:
     3     
     4     int uniquePaths(int m, int n) {
     5         if (m == 0 || n == 0)
     6             return 0;
     7         vector<vector<int>> v(m, vector<int>(n));
     8         int i, j;
     9         for (i = 0; i < m; i++) {
    10             for (j = 0; j < n; j++) {
    11                 if (i == 0 || j == 0)
    12                     v[i][j] = 1;
    13                 else
    14                     v[i][j] = v[i - 1][j] + v[i][j - 1];
    15             }
    16         }
    17         return v[m - 1][n - 1];
    18     }
    19 };
  • 相关阅读:
    树的基本概念
    bean的生命周期
    bean的创建过程--doCreateBean
    bean的创建过程--doGetBean
    SpringBoot自动装配解析
    [论文理解] Good Semi-supervised Learning That Requires a Bad GAN
    Ubuntu 环境安装 opencv 3.2 步骤和问题记录
    Linux 环境使用 lsof 命令查询端口占用
    Ubuntu 安装不同版本的 gcc/g++ 编译器
    [持续更新] 安全能力成长计划
  • 原文地址:https://www.cnblogs.com/lxc1910/p/10482789.html
Copyright © 2020-2023  润新知