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

组合问题(多集合)

 17. 电话号码的字母组合 - 力扣(LeetCode)

class Solution {
private:string lettermap[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public:string s;vector<string>result;void backtrucking(string &digits,int index){if(index==digits.size()){result.push_back(s);return;}int digit=digits[index]-'0';string letters=lettermap[digit];for(int i=0;i<letters.size();i++){s.push_back(letters[i]);backtrucking(digits,index+1);s.pop_back();}}vector<string> letterCombinations(string digits) {if(digits.size()==0){return result;}backtrucking(digits,0);return result;}
};

按照digit的值,依次取字符串中的元素,理解成类似二叉树一样的结构,定义index来统计取到了digit中的第几个。

定义s字符串存储搜索路径中的值,定义数组result来统计所有路径字符串的情况

终止条件:当index的值与字符串digits的大小相等时,也就时搜索路径到底了,到达叶子节点的情况,这时将s存储路径的值push进入到result结果数组中,最后return回上一层递归。

单层递归逻辑:循环遍历每一个集合中所有的值,将取到的值加入到s字符串中,再递归循环digit字符串中下一个数,最后将加入的值pop出去,这样才能在下次循环中加入新的值,每一次循环完成后就形成一个完整的结果。

http://www.xdnf.cn/news/5620.html

相关文章:

  • idea中ctrl+/注释,总是出现在最前行
  • 【LeeCode】1.两数之和
  • VsCode相关设置
  • 嵌入式工程师的职业发展路径
  • 《数字人生成工具技术研究与探索》
  • K8S Ingress、IngressController 快速开始
  • 什么是Vim
  • spring中的@Lazy注解详解
  • C++ 迭代器
  • C/C++ 内存管理深度解析:从内存分布到实践应用(malloc和new,free和delete的对比与使用,定位 new )
  • Chrome DevTools 性能面板
  • Spark处理过程-转换算子和行动算子
  • 前端基础之《Vue(16)—Vue脚手架介绍》
  • 【C++】cout的格式输出
  • thinkphp模板文件缺失没有报错/thinkphp无法正常访问控制器
  • 每周靶点分享:CD123、CD28、CCR2/CCL2、LAG-3
  • 云平台管理部署知识点——问题+答案
  • exsi导入镜像报错:行26:硬件系列‘wmx-19不受支持
  • 编译原理AST以Babel为例进行解读、Webpack中自定义loader与plugin
  • 从零构建高性能桌面应用:GPUI Component全解析与实战指南
  • 【C++】语言深处的“精灵”:探索内存的奥妙
  • 香港维尔利健康科技集团成都区域运营中心投入使用,西南市场战略全面提速
  • 基于STM32、HAL库的ICP-20100气压传感器 驱动程序设计
  • 解决IDEA Maven编译时@spring.profiles.active@没有替换成具体环境变量的问题
  • day23 机器学习管道 Pipeline
  • 掌握MySQL数据库操作:从创建到管理全攻略
  • uni-app学习笔记五--vue3插值表达式的使用
  • AI日报 · 2025年5月12日|OpenAI 更新「Supervised Fine‑Tuning」文档与 API 示范
  • Qt Creator 配置 Android 编译环境
  • Matlab 单机无穷大系统故障