[洛谷]P2404 自然数的拆分问题
一维的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 自然数的拆分问题相关推荐
- 洛谷P2404 自然数的拆分问题(回溯)
洛谷P2404 自然数的拆分问题(回溯) #洛谷P2404 自然数的拆分问题(回溯)# 参考题解:https://www.luogu.com.cn/blog/CM0/solution-p2404 (第 ...
- 【寒假每日一题】洛谷 P2404 自然数的拆分问题
题目链接:P2404 自然数的拆分问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 任何一个大于 1 的自然数 n,总可以拆分成若干个小于 n 的自然数之和.现在给你一 ...
- 洛谷P2404 自然数的拆分问题
搜索--P2404 自然数的拆分问题 题目背景 题目描述 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和.现在给你一个自然数n,要求你求出n的拆分成一些数字的和.每个拆分后的序列中的数 ...
- 洛谷 P2404 自然数的拆分问题
P2404 自然数的拆分问题 题目背景 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和. 题目描述 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和. 输入输出格式 输入 ...
- 洛谷 P2404 自然数的拆分问题C语言
文章目录 前言 一.题目 二.解题思路 1.考察方向 2.深度优先搜索 3.解题 正解(升序+不去重) (去重+升序) 总结 前言 之前看了好多文章都说学习编程时写博客的重要,但一直没有尝试,今天在这 ...
- 洛谷 P2404 自然数的拆分问题(搜索、保证顺序进行搜索)
dfs 搜索即可,主要是搜索顺序:每一个搜索的数需要 >=上一个数,那么对于第一个数下标会是-1,越界,就提前在数组中存储一个1,即可. #include <iostream> #i ...
- 洛谷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 ...
- 洛谷 p2404 自然数拆分问题
题目链接 题目描述 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和.现在给你一个自然数n,要求你求出n的拆分成一些数字的和.每个拆分后的序列中的数字从小到大排序.然后你需要输出这些序列 ...
- 深度优先搜索——自然数的拆分问题(洛谷 P2404)
题目选自洛谷P2404 题目显然是用DFS来做,需要注意的是 结果是从小到大的,所以同一种答案不同位置都只算一种,所以在dfs的时候 我们每次从上一次的值开始搜索即可. 用数组p[9]的1-8下标位置 ...
最新文章
- 冒泡排序,斐波拉契迭代、生成器
- 想避免宕机,数据中心运营商还要不断演练实践
- python字典更新值_Python 字典 update() 使用方法及示例
- boost::python::detail::is_string_literal相关的测试程序
- python中test_在python中生成py.test测试
- [问题解决]同时显示多个Notification时PendingIntent的Intent被覆盖?
- python预测药_python 最麻烦的时间有药了
- redis用list做消息队列
- 串口与定时器的重要关系_单片机串口必备基础知识
- C语言范例学习03-上
- 卫星地图上有没有UFO影像?
- otool介绍(转http://www.mc2lab.com/?p=68)
- Ubuntu构建ARM交叉编译器
- JAVA就业管理系统(JAVA毕业设计)
- Typora结合LightBox放大查看图片
- 光电信息科学与工程学c语言吗,2019光电信息科学与工程专业怎么样、学什么、前景好吗...
- IBM这20年(1999-2019)
- UE4 Chunk分块
- python mysqldb_python MySQLdb API手册
- 天池大赛 xgboost/lightgbm + python36 + win10_64 环境配置