题目描述 Description
把自然数N分解为若干个自然数之和,输出方案数。
输入描述 Input Description
N,(1≤n≤50)
输出描述 Output Description
方案数
样例输入 Sample Input
5
样例输出 Sample Output
7
数据范围及提示 Data Size & Hint
5 可分为
1 1 1 1 1
1 1 1 2
1 1 3
1 2 2
1 4
2 3
5
#include<iostream>
using namespace std;
int sum=0;
void dfs(int n,int s, int falg){
if(s==n){
sum++;
}
if(s>=n)
return ;
for(int i=1;i<=n;i++){
if(i>=falg)
dfs(n,s+i,i);
}
}
int main(){
int n;
cin>>n;
dfs(n,0,1);
cout<<sum<<endl;
return 0;
}