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

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。

    机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。

    问总共有多少条不同的路径?

    如:

    输入: m = 3, n = 2
    输出: 3
    解释:
    从左上角开始,总共有 3 条路径可以到达右下角。
    1. 向右 -> 向右 -> 向下
    2. 向右 -> 向下 -> 向右
    3. 向下 -> 向右 -> 向右

    每一个i,j格的路径总数由从它左边或者上边到达,故一共是两者之和。

    使用了简单动态规划的思路: path[i][j] = path[i-1][j] + path[i][j-1]. 

    class Solution {
    public:
        int uniquePaths(int m, int n) {
            
            vector<vector<int> > paths;
            paths.resize(n);
            for(int i = 0; i < n; i++){
                paths[i].resize(m);
            }        
            for(int i = 0; i < m; i++){
                paths[0][i] = 1;            
            }
            for(int j = 0; j < n; j++){
                paths[j][0] = 1;
            }
            
            for(int i =1; i < n; i++){
                for(int j = 1; j < m; j++){
                    paths[i][j] = paths[i-1][j] + paths[i][j-1];
                }
            }
            
            return paths[n-1][m-1];
        }
    };
    The Safest Way to Get what you Want is to Try and Deserve What you Want.
  • 相关阅读:
    10-JavaScript 条件语句
    9-JavaScript 比较
    8-JavaScript 运算符
    6-JavaScript 事件
    Sum Problem 重定向文件的使用
    Calculate A + B.
    Vue中computed的本质及与methods的区别
    外部文件使用django的models
    DjangoURL反向解析
    字符串格式化的方式
  • 原文地址:https://www.cnblogs.com/Shinered/p/11389343.html
Copyright © 2011-2022 走看看