1731: DFS-数字分解
时间限制: 1 Sec 内存限制: 128 MB
提交: 66 解决: 45
[状态] [提交] [命题人:外部导入]
题目描述
任何一个大于1的自然数n(n<=30),总可以拆分成若干个小于n的自然数之和。输出n的分解方案(n=n也是一种分解方案)
输入
正整数n(n<=30)
输出
分解的方案
样例输入 Copy
5
样例输出 Copy
1 1 1 1 1 1 1 1 2 1 1 3 1 2 2 1 4 2 3 5
来源/分类
#include<bits/stdc++.h>
using namespace std;
int cnt=0;
int a[10000];
void f(int x,int rest)
{
if(rest==0)
{
for(int i=1;i<=x-1;i=i+1)
cout<<a[i]<<" ";
cout<<endl;
return ;
}
for(int i=a[x-1];i<=rest;i++)
{
a[x]=i;
f(x+1,rest-i);
}
}
int main()
{
int n;
cin>>n;
a[0]=1;
f(1,n);
return 0;
}