zoukankan      html  css  js  c++  java
  • 62. Unique Paths不同路径

    • 网址:https://leetcode.com/problems/unique-paths/

    第一思路是动态规划

    通过观察,每一个格子的路线数等于相邻的左方格子的路线数加上上方格子的路线数

    于是我们就得到 dp[i][j] = dp[i-1][j] + dp[i][j-1] 这个状态转移方程

    • 一开始通过调用函数的方式对dp数组赋值,并且每次都判断index是否为特殊值,感觉耗时会很多,果不其然!
     1 int get_sum(vector<vector<int>> dp, int i, int j, int m, int n)
     2 {
     3     if(j == 1 || i == 1)
     4         return 1;
     5     return dp[i-1][j] + dp[i][j-1];
     6 }
     7 int uniquePaths(int m, int n)
     8 {
     9     vector<vector<int>> dp(m+1,vector<int>(n+1,0));
    10     dp[1][1] = -1;
    11     for(int i=1; i<=m; i++)
    12     {
    13         for(int j=1; j<=n; j++)
    14         {
    15             dp[i][j] = get_sum(dp, i, j, m, n);
    16         }
    17     }
    18     return dp[m][n];
    19 }

    • 紧接着想到可以在一开始就对特殊位置赋值,并且从零开始index,少去了函数的调用以及每一次的判断流程,程序可以大幅度减少运行时间和占用空间!
    •  1 class Solution {
       2 public:
       3     int uniquePaths(int m, int n) {
       4         vector<vector<int>> dp(m,vector<int>(n,0));
       5         for(int i=0;i<m;i++)
       6             dp[i][0] = 1;
       7         for(int j=0;j<n;j++)
       8             dp[0][j] = 1;
       9         for(int i=1; i<m; i++)
      10         {
      11             for(int j=1; j<n; j++)
      12             {
      13                 dp[i][j] = dp[i-1][j] + dp[i][j-1];
      14             }
      15         }
      16         return dp[m-1][n-1];
      17     }
      18 };

  • 相关阅读:
    GitHub上传项目遇到的问题 安静点
    jQuery自定义动画 安静点
    WPF验证器 安静点
    jQuery自定义插件 安静点
    jQuery多库共存 安静点
    WPF之行为(Behavior) 安静点
    jQuery显示隐藏 安静点
    window.onload与 $(document).ready()区别 安静点
    jQuery展开收缩 安静点
    jQuery动态导航栏 安静点
  • 原文地址:https://www.cnblogs.com/tornado549/p/10611092.html
Copyright © 2011-2022 走看看