news 2026/6/10 17:51:16

回溯算法--子集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
回溯算法--子集
输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

注意点:

  1. 组合问题和分割问题都是收集树的叶子节点,而子集问题是找树的所有节点!
  2. 那么既然是无序,取过的元素不会重复取,写回溯算法的时候,for就要从startIndex开始,而不是从0开始!

代码

根据回溯三部曲

参数、终止条件、单层递归逻辑,写出代码

代码

#include<iostream> #include<vector> using namespace std; class Solution { private: vector<vector<int>> result; // 存储所有子集的结果集 vector<int> path; // 存储当前正在构建的子集(路径) // 回溯函数:生成所有子集 // nums: 输入的数字数组 // startIndex: 当前递归开始选择的起始索引(避免重复选择) void backtracking(const vector<int>& nums, int startIndex){ // 终止条件1:当当前路径长度等于原数组长度时 // 说明已构建了一个包含所有元素的子集(即原数组本身) if(path.size() == nums.size()){ result.push_back(path); // 将完整子集加入结果 return; // 结束当前递归分支 } // 关键点:每次进入递归都先将当前path加入结果 // 这样能收集所有中间状态的子集,包括空集、部分子集 result.push_back(path); // 遍历所有可能的选择:从startIndex开始到数组末尾 for(int i = startIndex; i < nums.size(); i ++){ path.push_back(nums[i]); // 做选择:将当前数字加入路径 backtracking(nums, i + 1); // 递归:以i+1为起始点继续构建子集 path.pop_back(); // 撤销选择:回溯,移除最后加入的数字 } } public: vector<vector<int>> subsets(vector<int>& nums) { result.clear(); // 清空结果集,避免之前的数据干扰 path.clear(); // 清空当前路径 backtracking(nums, 0); // 从索引0开始回溯 return result; // 返回所有子集 } }; int main(){ Solution S; vector<int> nums = {1, 2, 3, 4}; vector<vector<int>> res = S.subsets(nums); for(auto row : res){ // 遍历每个组合 for(auto cols : row) // 遍历组合中的每个数字 cout << cols << " " ; // 输出数字 cout << endl; // 每个组合后换行 } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 18:40:19

OpenAI gpt-oss-20b支持13万token上下文

OpenAI gpt-oss-20b支持13万token上下文 在大模型越来越“重”的今天&#xff0c;我们却看到一种反向趋势正在悄然兴起&#xff1a;不是谁的参数更多&#xff0c;而是谁能用更少的资源做更多的事。当主流目光还聚焦于千亿级“巨兽”时&#xff0c;OpenAI悄悄推出了一款名为 gpt…

作者头像 李华
网站建设 2026/6/10 12:31:58

91n高并发场景下的TensorFlow模型服务部署策略

高并发场景下的 TensorFlow 模型服务部署策略 在电商大促、金融风控、实时推荐等“91n”类高流量业务中&#xff0c;AI 推理服务常常面临每秒数万次请求的极限压力。一个用户点击可能触发多个模型并行预测&#xff0c;延迟超过 100ms 就会影响用户体验甚至造成订单流失。这种环…

作者头像 李华
网站建设 2026/6/10 11:29:42

vLLM-Ascend部署Qwen3大模型实战指南

基于 vLLM-Ascend 高效部署 Qwen3 大模型实战指南 在当前大模型应用加速落地的背景下&#xff0c;如何在国产 AI 硬件上实现高性能、低成本的推理服务&#xff0c;已成为企业级部署的核心命题。昇腾&#xff08;Ascend&#xff09;AI 芯片凭借其强大的算力密度和能效比&#xf…

作者头像 李华
网站建设 2026/6/10 12:29:48

Seed-Coder-8B-Base如何自动生成API代码

Seed-Coder-8B-Base如何自动生成API代码 在现代软件开发中&#xff0c;API 是系统间通信的“通用语言”。但每当要实现一个新接口时&#xff0c;开发者往往得重复经历同样的流程&#xff1a;定义路由、建模请求体、设计响应结构、添加验证逻辑、处理异常……这些工作虽然不难&a…

作者头像 李华
网站建设 2026/6/9 19:11:01

使用Vue-Office在Dify前端展示AI生成文档

使用Vue-Office在Dify前端展示AI生成文档 在企业级AI应用快速落地的今天&#xff0c;一个常见的痛点逐渐浮现&#xff1a;尽管大语言模型能“写出”内容&#xff0c;但如何让用户真正“看到”一份排版规范、结构清晰、可直接使用的专业文档&#xff1f;很多系统仍停留在纯文本输…

作者头像 李华
网站建设 2026/6/10 15:35:13

Spring Cloud 2022.x/2023.x 与 Spring Cloud Alibaba 技术栈详解

一、前言 随着微服务架构在国内的广泛应用,Spring Cloud Alibaba 已经成为国内企业构建微服务系统的事实标准。它不仅完美融合了 Spring Cloud 生态,还结合了阿里巴巴在大规模微服务实践中的经验,为开发者提供了一套成熟、稳定、高性能的微服务解决方案。 二、Spring Clou…

作者头像 李华