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

递归函数题 整数拆分

题解: 整数拆分

1. 题目大意

给定一个正整数nnn(1≤n≤101 \le n \le 101n10),要求输出所有可能的拆分方案。

  • 规则:拆出的数字序列必须是单调不减的(即a1≤a2≤⋯≤aka_1 \le a_2 \le \dots \le a_ka1a2ak)。
  • 顺序:所有方案按字典序大小依次输出。

2. 核心算法:DFS 与 回溯

由于nnn的范围较小 (n≤10n \le 10n10),最适合使用深度优先搜索 (DFS)来穷举所有可能。

  • 如何保证单调不减?
    在递归时,记录上一次拆分出来的数字start。下一层拆分选取的数字必须从start开始尝试,这样生成的序列自然满足ai≤ai+1a_i \le a_{i+1}aiai+1
  • 如何保证字典序?
    在每一层搜索中,我们从小到大枚举当前位可能的数字。DFS 的天然特性(先探索较小的分支)会自动保证输出结果符合字典序。

3. 代码实现 (C++)

#include<iostream>#include<vector>usingnamespacestd;/** * @param remain 剩余待拆分的数值 * @param start 当前拆分允许的最小值(保证单调不减) * @param path 记录当前的拆分路径 */voiddfs(intremain,intstart,vector<int>&path){// 递归边界:当剩余数值为 0 时,说明找到了一组完整拆分if(remain==0){for(inti=0;i<path.size();i++){cout<<path[i]<<(i==path.size()-1?"":" ");}cout<<endl;return;}// 从 start 开始尝试,确保序列单调不减,同时满足字典序从小到大for(inti=start;i<=remain;i++){path.push_back(i);// 选择当前数字dfs(remain-i,i,path);// 递归:剩余量减少,下一个起点仍为 ipath.pop_back();// 回溯:撤销选择,尝试更大的 i}}intmain(){intn;if(cin>>n){vector<int>path;dfs(n,1,path);// 从 1 开始拆分}return0;}
http://www.cnnetsun.cn/news/1637946.html

相关文章:

  • MH-Z19非阻塞驱动库:嵌入式CO₂传感器实时采样实践
  • 准备工作之动态内存分配[基于郝斌课程]
  • JavaScript 对象
  • MbsAgent 4.0景区游客服务热线解决方案
  • 机械手控制系统核心组成与实操操作详解
  • 3步高效配置Magic Trackpad三指拖拽:Windows 11无缝体验指南
  • CogPMAlignMultiTool 工具 脚本实写硬币及载具案例
  • GPT-SoVITS语音克隆技术全解析:从原理到实践的完整指南
  • 等保.三级要求下Redis 安全测评应该怎么做?
  • 【Java结构化并发终极指南】:20年专家亲授3大优化范式与5个避坑红线
  • VS Code 代码 AI 补全冲突排查与解决指南(AI总结版)
  • 阿里人在Github分享的Spring Cloud全栈笔记,你想象不到有多全
  • 若依管理系统实战:基于Vuex的用户角色权限与动态菜单路由解析
  • c++编程:多组数据求和
  • AIAgent产业化加速落地,国泰计算机ETF(512720)逆势走强
  • 规则执行器设计与实现:优化复杂条件判断
  • 用AI重新定义中文字体设计:从3000个字符到完整字库的智能飞跃
  • 4 文件系统概述
  • Web自动化测试:selenium(环境部署和元素定位)
  • 别再用time.sleep模拟流式了!FastAPI 2.0原生async generator流式实践(含LangChain集成、RAG流式分块、错误恢复兜底机制)
  • 如何构建专业领域的大语言模型:中医AI诊疗系统的技术实现方案
  • seo优化机构怎样选择才合适_什么是seo优化机构
  • 3分钟搞定Windows软件安装难题:winget-install终极解决方案
  • FNET嵌入式TCP/IP协议栈:轻量、双栈、无OS的工业级网络方案
  • 嵌入式轻量级三自由度逆运动学库Leg
  • Qwen3.5-9B多场景应用:短视频脚本生成+分镜图描述+配音文案一体化
  • 个人知识库构建:OpenClaw+千问3.5-27B自动整理碎片化笔记
  • M5Battery嵌入式电池电量可视化库详解
  • SDMatte镜像CI/CD流程:GitHub Actions自动构建+镜像扫描+部署验证
  • 从比赛冠军到开源项目:手把手教你复刻我那台26秒跑完的STM32F103循迹小车