From d4a52e012dc2d55dbc485ef961c5aabb519be8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=93=E5=8F=91=E5=8F=97=E9=95=BF=E7=94=9F?= Date: Fri, 31 Aug 2018 23:50:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=92(1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../算法/{动态规划.md => 动态规划(1).md} | 42 +++++++++++++++++- source/images/算法/robot_maze.png | Bin 0 -> 9685 bytes 2 files changed, 40 insertions(+), 2 deletions(-) rename source/_posts/算法/{动态规划.md => 动态规划(1).md} (60%) create mode 100644 source/images/算法/robot_maze.png diff --git a/source/_posts/算法/动态规划.md b/source/_posts/算法/动态规划(1).md similarity index 60% rename from source/_posts/算法/动态规划.md rename to source/_posts/算法/动态规划(1).md index 188244d..c926097 100644 --- a/source/_posts/算法/动态规划.md +++ b/source/_posts/算法/动态规划(1).md @@ -1,5 +1,5 @@ --- -title: 动态规划 +title: 动态规划(1) date: 2018-8-27 02:17:07 tags: - 算法 @@ -59,4 +59,42 @@ class Solution { } ``` 空间复杂度是`O(1)`, 因为使用了常数个变量, 没有开辟长度为n的新数组 -时间复杂度是`O(n)`, 因为要逐个遍历传入的数组当中的元素 \ No newline at end of file +时间复杂度是`O(n)`, 因为要逐个遍历传入的数组当中的元素 + +### 不同路径问题 +一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ) +机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”) +问总共有多少条不同的路径? +![不同路径问题](/images/算法/robot_maze.png) + +#### 解决方式 +1. 首先最左上角的格子的到达方式肯定只有1种, 因为必须要从这个格子开始走 +2. 在每个格子当中只能向右或者向下移动, 所以每个对于每个格子来说, 到达这个格子的时候, 只能从左侧或者上方到达 +3. 左边缘的格子无法从左侧到达, 上边缘的格子无法从上方到达 + +所以对于每个格子来说, 到达这个格子的路径的数量 = 到达左侧格子的数量 + 到达上方格子的数量 +左边缘的格子前者为0, 上边缘的格子后者为0 + +根据这个原则, 就可以把到达每个格子的路径数量递推出来了 + +#### 代码实现 +```java +public int uniquePaths(int m, int n) { + if(m<=0 || n<=0) { + return 0; + } + int[][] nums = new int[m+1][n+1]; + nums[1][1] = 1; + for(int i=1 ; i<=m ; i++) { + for(int j=1 ; j<=n ; j++) { + if(i==1 && j==1) { + continue; + } + nums[i][j] = nums[i-1][j] + nums[i][j-1]; + } + } + return nums[m][n]; +} +``` +整体思路就是创建一个整数二维数组, m+1和n+1是为了留出第一行和第一列数值都是0 +方便进行计算, 当然这个也不是必须的, 在循环当中判断也可以, 但是不影响时间和空间复杂度 \ No newline at end of file diff --git a/source/images/算法/robot_maze.png b/source/images/算法/robot_maze.png new file mode 100644 index 0000000000000000000000000000000000000000..ebcd2dce41643165dd3dd8c8b5f05f00ebe616c9 GIT binary patch literal 9685 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 Yae*k8AD(Ft=d=KdvZ^vw(#E0x1G8V1H~;_u literal 0 HcmV?d00001