标签:return src using 大于 描述 one dfs 输出 main
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。
待拆分的自然数n。
若干数的加法式子。
7
1+1+1+1+1+1+1 1+1+1+1+1+2 1+1+1+1+3 1+1+1+2+2 1+1+1+4 1+1+2+3 1+1+5 1+2+2+2 1+2+4 1+3+3 1+6 2+2+3 2+5 3+4
详细的都在代码里了,自己看吧。
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[41],s; 4 void print(int s) { 5 for(int i=1;i<=s-2;i++)printf("%d+",a[i]); 6 printf("%d\n",a[s-1]); 7 } 8 void search(int n,int s,int pre){ 9 if(n==0 && s>2){ 10 print(s);//打印 11 return;//返回 12 } 13 for(int i=pre;i<=n;i++){ 14 a[s]=i;//每一种 15 search(n-i,s+1,i);//类似于递归,搜索下一种可能,若放满则打印 16 } 17 } 18 int main(){ 19 int n; 20 cin>>n; 21 search(n,1,1); 22 return 0; 23 }
标签:return src using 大于 描述 one dfs 输出 main
原文地址:https://www.cnblogs.com/YFbing/p/9578917.html