分析:

从测试数据来看

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

1 1 1 1 1 3 第6个数加1,总数为8,去掉第6个数

1 1 1 1 2 2 第5 个数加1,第6个数在第五个数的基础上加0,总数为7

推到这里就差不多了。

为了避免重复的表达式出现我们使后一个数的起始值为前一个数。

因为n小于等于8,所以可以用一个数组把成立的表达式存起来。

代码实现如下:

#include<stdio.h>
int data[10];
int n;
void dfs(int sum,int pre,int NO)//总和,前一个数,第几个数
{for(int i=pre;i<n;i++){sum+=i;if(sum>n) return ;//大了就退回if(sum==n)//等于就输出{
for(int j=1;j<NO;j++)printf("%d+",data[j]);printf("%d\n",i);return;}data[NO]=i;//小了就放进表达式dfs(sum,i,NO+1);//继续搜索sum-=i;//sum回溯}
}
main()
{scanf("%d",&n);dfs(0,1,1);
} 

我是尝试出来的,一开始对这个题也没思路,把数据放在excel里面观察了一下就有点灵感了。

洛谷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搜索得记录搜索了多少次数,先用数组存数字,打印时在做处理, 用一个数组记录每一次拆分的数字是多少,同时用一个指针ct指向上一个拆分出来的数字. 若这个数字为0,就代表找到一种答案,打印处理 ...

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

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

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

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

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

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

最新文章

  1. Java 程序优化之对象池
  2. pyspark的rdd直接写入mysql
  3. 成中集团线下IDC迁移上云
  4. 矩阵求导最简单的理解
  5. 【机器学习】集成学习--Stacking
  6. zk的数据一致性问题
  7. 【BZOJ-1097】旅游景点atr SPFA + 状压DP
  8. 深度 | EB级规模大数据平台核心技术揭秘(上)
  9. linux 信号量_SystemV IPC通信信号量
  10. python批量转换:未知类型二进制净生产力(NEP)遥感定量反演产品数据的打开,转换为tif,可用于通用GIS、遥感软件打开。
  11. 正则表达式(用户名表单验证/验证座机号码/正则替换replace)
  12. python输入逗号分隔_Python实现按逗号分隔列表的方法
  13. 麻雀算法(SSA)优化的BP神经网络预测,SSA-BP回归预测,多输入单输出模型。
  14. Python【一点号】短视频的自动上传与发布实例演示,同时支持抖音、快手、哔哩哔哩、小红书、微视、西瓜视频、微信视频号等平台的视频自动化同步发布
  15. 【分享】揭发天气秀、桌面秀、雪狐等号称资源占用小的桌面软件的流氓行为!
  16. “只用 1 分钟” - 超简极速 Apk 签名 多渠道打包神器
  17. python小技巧之:同时安装py2和py3,如何在指定的版本下pip安装包
  18. 计算机网络应用层和传输层及网络层协议有哪些?
  19. 大学计算机系学unity,上海交通大学计算机科学与工程系(CSE)
  20. htop与top命令

热门文章

  1. 利用SLR实现可编程计算器(表达式求值)
  2. JSP | 简易购物车的实现
  3. iPhone6p后摄像头抖动的问题
  4. SkyWalking调研与初步实践
  5. 阿里巴巴java开发规范手册
  6. 短线操盘的10种方法、
  7. mui上拉加载不好使
  8. 国家省份城市级联菜单
  9. 原来,我连一个URL都写不对…
  10. HDOJ 1000A + B Problem最短代码探索