小圌的全排列
2. 自然数的拆分
题目ID:9396必做题100分
最新提交:
Wrong Answer
0 分
历史最高:
Wrong Answer
0 分
时间限制: 1000ms
空间限制: 524288kB
题目描述
时间限制:1s 空间限制:512M
题目描述:
任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。当n=7时,共14种拆分方法:
7=1+1+1+1+1+1+1 7=1+1+1+1+1+2 7=1+1+1+1+3 7=1+1+1+2+2 7=1+1+1+4 7=1+1+2+3 7=1+1+5 7=1+2+2+2 7=1+2+4 7=1+3+3 7=1+6 7=2+2+3 7=2+5 7=3+4
输入格式:
一个整数 �n。(2≤�≤25)(2≤n≤25)
输出格式:
按字典序输出具体的方案。
样例输入:
5
样例输出:
5=1+1+1+1+1 5=1+1+1+2 5=1+1+3 5=1+2+2 5=1+4 5=2+3
#include<bits/stdc++.h>
using namespace std;
int n,m,sum=0,ans=0,sm;
int visit[101],a[101],u[101];
void dfs(int cur,int s){
int i;
if(s==n){
if(cur==2){
return;
}
for(int i=1;i<cur;i++){
if(i==1){
cout<<a[i];
}else{
cout<<'+'<<a[i];
}
}
cout<<'\n';
return ;
}
for(i=a[cur-1];i<=n-s;i++){
a[cur]=i;
dfs(cur+1,s+i);
}
}
int main(){
cin>>n;
a[0]=1;
dfs(1,0);
}