代码随机化算法训练营第 24 天|77. combo
最编程
2024-07-10 18:05:03
...
77.组合
题目
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。
你可以按 任何顺序 返回答案。
解题思路
- 这个组合就是数学里的排列组合中的组合
- 代码随想录给出了回溯模板
// 1 确定回溯算法和参数
void backtracking(参数) {
// 2 终止条件
if (终止条件) {
存放结果;
return;
}
// 遍历过程
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}
}
代码
class Solution {
private:
vector<vector<int>> result; // 存放符合条件结果的集合
vector<int> path; // 用来存放符合条件结果
void backtracking(int n, int k, int startIndex) {
if (path.size() == k) {
result.push_back(path);
return;
}
for (int i = startIndex; i <= n; i++) {
path.push_back(i); // 处理节点
backtracking(n, k, i + 1); // 递归
path.pop_back(); // 回溯,撤销处理的节点
}
}
public:
vector<vector<int>> combine(int n, int k) {
result.clear(); // 可以不写
path.clear(); // 可以不写
backtracking(n, k, 1);
return result;
}
};
上一篇: 嵌入式--QT]QThread 创建多线程代码示例
下一篇: 自动点名器
推荐阅读
-
系统架构设计器教程 第 19 章 19.4 Kappa 架构说明
-
专题十二_洪水灌溉算法_算法专题详细摘要-7.壁橱组织(中型)
-
微服务开源框架 TARS RPC 源代码初识 TARS C++ 服务器端
-
[Flutter] 基本入门:基本代码结构
-
滚雪球式的 Redis [第 9.2 讲]:Redis 的最佳实践:高效应用和常见反模式规避指南
-
平衡二叉树(AVL 树)的二叉树算法详解
-
JAVA 就业说明 8 - 第 2 阶段 (5)
-
[英特尔 IA-32 架构软件开发人员手册第 3 卷:系统编程指南]译自 2001 年版,1-9
-
机器学习捷径:自动特征工程综合分析(附代码示例)
-
聚类分析 | IPOA 优化 FCM 模糊 C 均值聚类优化算法 - 基本介绍