当前位置: 首页 > news >正文

算法题(172):组合型枚举

审题:
本题需要我们对1到n的数进行n中取m的组合枚举,找到所有不同的组合并按照字典序输出,要求行内和行间都满足字典序

思路:
本题我们采用枚举的方法,但是用for循环暴力枚举会有两个大问题

其一是无法确定for循环个数,因为我们要取m次,而m是题目给的,我们事先无法知道

其二是较难进行字典序排序输出

其三是for循环层数可能极大,会超时

所以我们采用深度优先搜索的方法进行枚举

方法一:深度优先搜索

我们先分析选取过程与方法:

我们以从1~4中选三个数的情况为例:
对于第一个空位:我们可以填写1,2,3,4

对于已经选了1的第二个空位我们可以填写:2,3,4

对于已经选了2的第二个空位我们可以填写:3,4

对于已经选了3的第二个空位我们可以填写:4

对于已经选了4的第二个空位我们不可以填写,直接返回不输出

.......

发现:

1.我们需要从前面填写过的数的下一个数开始填写,且这个数的填写顺序是字典序从小到大

eg:前面有了14_,后面如果填写41_会出现重复,而我们需要的是组合不是排列

字典序从小到大是为了让行内满足字典序要求

2.当无法插入足够个数的数时,直接return不输出

3.当插入个数等于m时:按格式输出数据并返回

解题:

#include<iostream> #include<vector> using namespace std; int n, m; vector<int> path;//记录数据 void dfs(int begin) { if (path.size() == m) { for (auto e : path) cout << e << " "; cout << endl; return; } for(int i = begin; i <= n; i++) { path.push_back(i);//插入当前层选取数据 dfs(i + 1);//进入更深一层搜索 path.pop_back();//数据回溯 } } int main() { cin >> n >> m; dfs(1);//搜索 return 0; }

注意:
1.使用vector进行数据记录的好处:不用在dfs中传递待插入位置的索引,可以直接使用push_back()接口进行数据插入,使用pop_back()接口进行数据弹出回溯。

且还可以直接根据path的size判断是否插入足够数据

2.由于我们要知道当前层是从哪个数开始放置,所以一定要传一个begin给dfs函数

P10448 组合型枚举 - 洛谷

http://www.jsqmd.com/news/766564/

相关文章:

  • 2026 深圳 GEO 优化服务商综合实力测评 - GEO优化
  • 广州互诚信息科技:十年沉淀的企业级小程序开发服务商 - 奔跑123
  • 音圈线性执行器适用哪些自动化场景?2026年靠谱生产厂商盘点 - 品牌2026
  • 公共安全打架行为识别数据集分享(适用于YOLO系列深度学习检测任务)
  • CodeIgniter4第三方库集成终极指南:轻松整合10+流行PHP库
  • AISMM白皮书深度拆解:5大核心模块、87个评估维度、23个典型误用陷阱——一线架构师手把手带你避坑
  • 为什么92%的MCP 2026告警仍依赖人工响应?揭秘下一代上下文感知告警引擎的4层配置逻辑
  • NV128语音芯片、8002A功放电路、AT24C02电路
  • 浏览器沙箱环境构建:安全执行与结构化回显的实现原理
  • 终极Photoshop纹理压缩指南:Intel Texture Works插件完整使用教程
  • GPT-Engineer高可用部署架构:构建稳定AI开发环境的终极指南
  • 从一次PCIe设备异常掉速说起:深入理解MPS/MRRS寄存器与TLP数据包那点事
  • 工业夹爪定制选型要注意哪些细节?源头生产厂家推荐参考 - 品牌2026
  • SQLCoder终极指南:如何用AI让自然语言秒变SQL查询
  • 如何快速安装和配置QLMarkdown:新手入门教程
  • Verilog表达式位宽:从C语言类型转换的“坑”说起,聊聊硬件描述语言里的那些“潜规则”
  • 2026 杭州 GEO 优化服务商实力盘点:AI 搜索红利下的杭企数字化选型指南 - GEO优化
  • 财务知识-营收vs毛利vs利润 - 智慧园区
  • 算法题(173):枚举排列
  • Bounded Context Canvas终极指南:如何快速设计领域驱动设计中的有界上下文
  • 伺服电爪靠什么实现高精度作业?2026年伺服电爪高口碑品牌怎么选 - 品牌2026
  • 利用快马平台ai能力,十分钟构建智能天气助手应用原型
  • 华东师大家教网:让专业与用心,为孩子成长护航 - 教育信息速递
  • 2026 南京 GEO 优化服务商实力测评:AI 营销新赛道的金陵企业优选指南 - GEO优化
  • “00后”冠军吴宜泽背后:父母关店卖房带儿子求学十年
  • Sign in with Apple网页端集成踩坑实录:如何正确配置Service ID与JavaScript SDK
  • 2025.05.06
  • EPPlus部署与配置:生产环境中最佳配置方案详解
  • 如何使用Android Studio Profiler优化MPAndroidChart性能:完整内存监控指南
  • 互联网大厂 Java 求职者面试:从音视频到微服务的挑战与应对