• 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?
    题目

    Note: m and n will be at most 100.

    分析

    这是一道动态规划的题目:
    对于一个mn矩阵,求解从初始点(0,0)到结束点(m1,n1)的路径条数,规定每次只能向右或向下走一步;

    我们知道:

    1.当i=0,j=[0,n1]时,f(i,j)=f(i,j1)=1; 因为每次只能向右走一步,只有一条路径;
    2. 当i=[0,m1],j=0时,f(i,j)=f(i1,j)=1;因为每次只能向下走一步,只有一条路径;
    3. 当(i,j)为其它时,f(i,j)=f(i1,j)+f(i,j1);因为此时可由(i1,j)向右走一步,或者(i,j1)向下走一步,为两者之和;

    AC代码

    //非递归实现回溯,会超时
    class Solution {
    public:
        int uniquePaths(int m, int n) {
            if (m == 0 || n == 0)
                return 0;
            vector<vector<int> > ret(m, vector<int>(n, 1));
            //如果矩阵为单行或者单列,则只有一条路径
            for (int i = 1; i < m; i++)
            for (int j = 1; j < n; j++)
                ret[i][j] = ret[i - 1][j] + ret[i][j - 1];
    
            return ret[m-1][n-1];
        }
    };
    

    递归实现算法(TLE)

    class Solution {
    public:
        int uniquePaths(int m, int n) {
            if (m == 0 || n == 0)
                return 0;
            //如果矩阵为单行或者单列,则只有一条路径
            else if (m == 1 || n == 1)
                return 1;
    
            else
                return uniquePaths(m, n - 1) + uniquePaths(m - 1, n);
        }
    };

    GitHub测试程序源码

  • 相关阅读:
    Vue 过滤器入门
    Vue 常用指令
    git 报错 error: failed to push some refs to .....
    CSS 小结笔记之文字溢出处理
    CSS 小结笔记之元素的隐藏与显示
    CSS 小结笔记之定位
    CSS 小结笔记之清除浮动
    CSS 小结笔记之浮动
    CSS 小结笔记之盒子模型
    CSS 实例之文字的凸起与凹陷
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214870.html
Copyright © 2020-2023  润新知