输入自然数n(n<100),输出所有和的形式。不能重复。

如:4=1+1+2;4=1+2+1;4=2+1+1 属于一种分解形式。

样例:

输入:

7

输出:

7=1+6

7=1+1+5

7=1+1+1+4

7=1+1+1+1+3

7=1+1+1+1+1+2

7=1+1+1+1+1+1+1

7=1+1+1+2+2

7=1+1+2+3

7=1+2+4

7=1+2+2+2

7=1+3+3

7=2+5

7=2+2+3

7=3+4

分析:

假设n=a[1]+a[2]+...+a[n],为了避免分解重复,可以约定a[1]≤a[2]≤...≤a[n],

假设当前已经分解出cur项,待分解的数字为m(m=n-a[1]-a[2]...-a[cur]);

则 a[1],a[2],...,a[cur],m即是一种分解方案(cur>0)

如何继续分解呢,a[cur+1]=?

a[cur+1]的取值范围:a[cur]~m/2  (因为 m-a[cur+1]>=a[cur+1],则a[cur+1]/2<=m才能继续分解)

代码:

 #include<iostream>
#include<cstring>
using namespace std;
int a[],b[];
int s=, n;
void dfs(int cur,int m){
if (cur>){
s++;
cout<<n<<"=";
for (int i=;i<=cur;i++) cout<<a[i]<<"+";
cout<<m<<endl;
}
for (int i=a[cur];i<=m/;i++){
a[cur+]=i;
dfs(cur+,m-i);
}
}
int main(){
memset(a,,sizeof(a));
memset(b,,sizeof(b));
cin>>n;
a[]=;
dfs(,n);
cout<<s<<endl;
return ;
}

最新文章

  1. MongoDB基础知识
  2. 如何把自己打造成技术圈的 papi 酱
  3. php 关联数据库的留言板练习
  4. [工作中的设计模式]策略模式stategy
  5. Python模块学习
  6. Windows 10 IoT Core Samples
  7. mysql如果搜索长度过宽 导致显示不全的情况解决
  8. 【HDOJ】1114 Piggy-Bank
  9. Mysql C语言API编程入门讲解
  10. Serv-u FTP迁移(windows_to_windwos)
  11. 关于UIPageViewController那些事
  12. python - class类(归一化设计)
  13. dubbo系列二、dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台)
  14. Python3自然语言(NLTK)——语言大数据
  15. 函数式编程的终极形式:面向映射流的编程pipeline
  16. 机器学习&amp;深度学习视频资料汇总
  17. SharePoint 2013 Farm 安装指南——构建一个双层SharePoint Farm
  18. EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY&#39;RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
  19. T4模板批量生成代码文件
  20. bat批处理以当前时间创建文本文件

热门文章

  1. Qt之findChild
  2. 小例子(二)、winform窗体间的关系
  3. sleep函数
  4. ubuntu14.04LS中安装sogouPingyin
  5. 探究linux文件
  6. 有一种感动叫ACM(记WJMZBMR在成都赛区开幕式上的讲话)
  7. Apache Thrift - 可伸缩的跨语言服务开发框架
  8. Resume Hook SSDT
  9. Js练习题之查找字符串中出现最多的字符和个数
  10. iOS产品开发流程