algorithm - 如何在 m×n 矩阵中找到从 (1, 1) 到 (m, n) 的所有可能路径?
问题描述
假设我们有一个起始索引为 (1, 1) 的 m×n 矩阵。我们必须通过向右或向下移动到相邻元素来到达位置 (m, n)。我们如何探索所有可能的路径?
解决方案
将帕斯卡三角形转 1/8 圈:
1 1 1 1 1 ...
1 2 3 4 5 ...
1 3 6 10 15 ...
1 4 10 20 35 ...
该矩阵的元素 [M, N] 是您想要的答案。
这个数组的构造与帕斯卡三角形的构造是同构的:
从 (1, 1) 开始;只有一种方法可以到达那个地方。下一步是到 (2, 1) 或 (1, 2) - 只有一种方法可以到达那个位置。在下一步中,现在有两种到达 (2, 2) 的方式:它可以从前面的任何一个点到达,所以方式的数量是这两个元素的总和。这就是帕斯卡三角形的临界同构。
更直接地说,只需对三角形的任何元素使用公式:
(a+b)! / a!b!
其中 a = M-1,b = N-1
这是您需要的数量right
和down
移动,使用组合公式对其所有排列。
推荐阅读
- docker - 带有 Dockerized 声明式管道的 Artifactory 插件
- sql - 使用另一个表中的值进行大规模插入?
- django - Django Signals - “Created”参数变为假
- powershell - 如何从 PowerShell 中的文本文件中获取特定字符串并将其分配为变量
- firebase - 类型“AuthService”没有成员“setUserinformation”
- java - 在 Java 8 中为单引号和逗号连接数字
- android - 如何在 Android 设备上录制内部音频或录制 MediaPlayer 音频流?
- java - SpringBoot、Hibernate 和 flyway db 问题
- c# - PropertyChanged 和 IValueConverter
- java - 正则表达式不应包含整个单词和点