自然数的拆分问题

题目意思很简单,就是把一个数按照字典序拆分,很显然可以用回溯,把每种可能都遍历一遍,遇到不可能的情况就剪枝
`#include

int lst[10]={0};
int n,sum=0;

void solve(int res,int p){
if(res0&&lst[1]!=n){
for(int i=1;i<p;i++){
printf("%d",lst[i]);
if(i
p-1) printf("\n");
else printf("+");
}
return;
}
for(int i=1;i<=res;i++){
if(i>=lst[p-1]){
lst[p]=i;
solve(res-i,p+1);
}
}
return;
}

int main(){
scanf("%d",&n);
solve(n,1);
return 0;
} `

posted @ 2025-02-13 22:23  十柒*  阅读(2)  评论(0编辑  收藏  举报