数的排列相加
/*事先声明:本文是以深搜算法为基础写出,用于计算自然数以自然数组合相加的方法,编译语言为C++,使用编辑器为DevC++ 5.11,如有侵权请及时联系,会立即删除。在未经本人许可禁止用于商用,改写,感谢支持!*/
#include<bits/stdc++.h>
using namespace std;
int n=0,c[101]={ },z=1,t=0,s=0;
int cf(int a,int b){
for(int i=c[b-1];i<=a;i++){
if(i<n){c[b]=i;a-=i;
if(a==0){s++;cout<<"<"<<s<<">"<<" ";printf("%d=",n);
for(int o=1;o<b;o++){printf("%d+",c[o]);}
printf("%d\n",c[b]);}
else{cf(a,b+1);}a+=i;}}}
int main(){
c[0]=1;
cout<<"请输入要组成的数(x<=70):";
cin>>n;
cf(n,1);
cout<<s;
return 0;}

