更新图片链接

This commit is contained in:
kama
2025-05-19 17:11:04 +08:00
parent b489cb69b5
commit ce6e658d14
315 changed files with 2499 additions and 1729 deletions

10
problems/0077.组合.md Normal file → Executable file
View File

@@ -82,7 +82,7 @@ for (int i = 1; i <= n; i++) {
那么我把组合问题抽象为如下树形结构:
![77.组合](https://file.kamacoder.com/pics/20201123195223940.png)
![77.组合](https://file1.kamacoder.com/i/algo/20201123195223940.png)
可以看出这棵树,一开始集合是 1234 从左向右取数,取过的数,不再重复取。
@@ -126,7 +126,7 @@ vector<int> path; // 用来存放符合条件结果
从下图中红线部分可以看出,在集合[1,2,3,4]取1之后下一层递归就要在[2,3,4]中取数了,那么下一层递归如何知道从[2,3,4]中取数呢靠的就是startIndex。
![77.组合2](https://file.kamacoder.com/pics/20201123195328976.png)
![77.组合2](https://file1.kamacoder.com/i/algo/20201123195328976.png)
所以需要startIndex来记录下一层递归搜索的起始位置。
@@ -146,7 +146,7 @@ path这个数组的大小如果达到k说明我们找到了一个子集大小
如图红色部分:
![77.组合3](https://file.kamacoder.com/pics/20201123195407907.png)
![77.组合3](https://file1.kamacoder.com/i/algo/20201123195407907.png)
此时用result二维数组把path保存起来并终止本层递归。
@@ -163,7 +163,7 @@ if (path.size() == k) {
回溯法的搜索过程就是一个树型结构的遍历过程在如下图中可以看出for循环用来横向遍历递归的过程是纵向遍历。
![77.组合1](https://file.kamacoder.com/pics/20201123195242899.png)
![77.组合1](https://file1.kamacoder.com/i/algo/20201123195242899.png)
如此我们才遍历完图中的这棵树。
@@ -267,7 +267,7 @@ for (int i = startIndex; i <= n; i++) {
这么说有点抽象,如图所示:
![77.组合4](https://file.kamacoder.com/pics/20210130194335207-20230310134409532.png)
![77.组合4](https://file1.kamacoder.com/i/algo/20210130194335207-20230310134409532.png)
图中每一个节点图中为矩形就代表本层的一个for循环那么每一层的for循环从第二个数开始遍历的话都没有意义都是无效遍历。