自然数拆分问题
题解:
DFS所有可能,传递当前搜索的数值,累加和以及已经取的数量
代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[1005];
void dfs(int x,int y,int z){
if(y>n) return;
if(y==n){
for(int i=1; i<z; i++){
if(i>1) printf("+");
printf("%d",a[i]);
}printf("\n");
return;
}
for(int i=x; i<n; i++){
a[z]=i;
dfs(i,y+i,z+1);
}
}
int main(){
scanf("%d",&n);
dfs(1,0,1);
return 0;
}```