一维的dfs搜索得记录搜索了多少次数,先用数组存数字,打印时在做处理,

用一个数组记录每一次拆分的数字是多少,同时用一个指针ct指向上一个拆分出来的数字。

若这个数字为0,就代表找到一种答案,打印处理

对于第一个数字要进行特判,他不能大于n/2。

对于后面的不为0数字,枚举前先让ct++,ct偏移到当前位置

由于从小到大,所以从上一个拆分的数字开始枚举,(即从ct-1指向的开始)一直到x.

当枚举结束,能推出循环时即代表所以答案都枚举完毕,即当前位置已无答案,只能退回上一级,寻找答案,同时ct--偏移到上一级

#include <bits/stdc++.h>
using namespace std;
int n;int a[1999];//记录各个拆分数字
int ct = 0;//记录当前位置的指针。int dfs(int x) { //表示传进来的数字是几if (x == 0) {for (int i = 1; i < ct; i++)cout << a[i] << "+";cout << a[ct];cout << endl;return 0;}ct++ ;//开始枚举,指针ct先偏移for (int i = a[ct - 1]; i <= x; i++) { //让i从上一个数字开始枚举a[ct] = i;dfs(x - i);if (a[1] > n / 2)return 0;}ct-- ;//全部答案都枚举完毕,返回到上一级枚举,ct偏移回去return 0;}int main() {a[0] = 1;cin >> n;dfs(n);
}
​

[洛谷]P2404 自然数的拆分问题相关推荐

  1. 洛谷P2404 自然数的拆分问题(回溯)

    洛谷P2404 自然数的拆分问题(回溯) #洛谷P2404 自然数的拆分问题(回溯)# 参考题解:https://www.luogu.com.cn/blog/CM0/solution-p2404 (第 ...

  2. 【寒假每日一题】洛谷 P2404 自然数的拆分问题

    题目链接:P2404 自然数的拆分问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 任何一个大于 1 的自然数 n,总可以拆分成若干个小于 n 的自然数之和.现在给你一 ...

  3. 洛谷P2404 自然数的拆分问题

    搜索--P2404 自然数的拆分问题 题目背景 题目描述 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和.现在给你一个自然数n,要求你求出n的拆分成一些数字的和.每个拆分后的序列中的数 ...

  4. 洛谷 P2404 自然数的拆分问题

    P2404 自然数的拆分问题 题目背景 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和. 题目描述 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和. 输入输出格式 输入 ...

  5. 洛谷 P2404 自然数的拆分问题C语言

    文章目录 前言 一.题目 二.解题思路 1.考察方向 2.深度优先搜索 3.解题 正解(升序+不去重) (去重+升序) 总结 前言 之前看了好多文章都说学习编程时写博客的重要,但一直没有尝试,今天在这 ...

  6. 洛谷 P2404 自然数的拆分问题(搜索、保证顺序进行搜索)

    dfs 搜索即可,主要是搜索顺序:每一个搜索的数需要 >=上一个数,那么对于第一个数下标会是-1,越界,就提前在数组中存储一个1,即可. #include <iostream> #i ...

  7. 洛谷p2404 自然数的拆分

    分析: 从测试数据来看 1 1 1 1 1 1 1 总数为7 最开始时7个1展开 1 1 1 1 1 1 2 最后一个数加1,总数变为8,去掉第7个数 1 1 1 1 1 2 第6个数加1,总数为7 ...

  8. 洛谷 p2404 自然数拆分问题

    题目链接 题目描述 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和.现在给你一个自然数n,要求你求出n的拆分成一些数字的和.每个拆分后的序列中的数字从小到大排序.然后你需要输出这些序列 ...

  9. 深度优先搜索——自然数的拆分问题(洛谷 P2404)

    题目选自洛谷P2404 题目显然是用DFS来做,需要注意的是 结果是从小到大的,所以同一种答案不同位置都只算一种,所以在dfs的时候 我们每次从上一次的值开始搜索即可. 用数组p[9]的1-8下标位置 ...

最新文章

  1. 冒泡排序,斐波拉契迭代、生成器
  2. 想避免宕机,数据中心运营商还要不断演练实践
  3. python字典更新值_Python 字典 update() 使用方法及示例
  4. boost::python::detail::is_string_literal相关的测试程序
  5. python中test_在python中生成py.test测试
  6. [问题解决]同时显示多个Notification时PendingIntent的Intent被覆盖?
  7. python预测药_python 最麻烦的时间有药了
  8. redis用list做消息队列
  9. 串口与定时器的重要关系_单片机串口必备基础知识
  10. C语言范例学习03-上
  11. 卫星地图上有没有UFO影像?
  12. otool介绍(转http://www.mc2lab.com/?p=68)
  13. Ubuntu构建ARM交叉编译器
  14. JAVA就业管理系统(JAVA毕业设计)
  15. Typora结合LightBox放大查看图片
  16. 光电信息科学与工程学c语言吗,2019光电信息科学与工程专业怎么样、学什么、前景好吗...
  17. IBM这20年(1999-2019)
  18. UE4 Chunk分块
  19. python mysqldb_python MySQLdb API手册
  20. 天池大赛 xgboost/lightgbm + python36 + win10_64 环境配置

热门文章

  1. 为PANDA制作的DWI按扫描次数分类的toolkit
  2. consul知识梳理与环境搭建
  3. 波司登少了“鹅胸前的四片毛”
  4. Java发送邮件链接实现登录注册
  5. AD2019网络标号批量改名
  6. 自考计算机英语难度,自考本科商务英语专业真的难吗
  7. 解决桌面IE图标无法删除方法
  8. 游戏外挂内存数据读取
  9. 移动校园卡,电信校园卡,联通校园卡
  10. 满洲国时期的国都建设