#include<
stdio.h>
#include<
stdlib.h>
int stack[1000];
void dfs(int n,int k,int min)
{
if(n==0)
{
for(int i=0;i<k;i++)
{
if(i)putchar('+');
printf("%d",stack[i]);
}
putchar('\n');
}
else
{
for(int i=1;i<=n&&i<=min;i+=2)
stack[k]=i,dfs(n-i,k+1,i<min?i:min);
}
}
int main()
{
dfs(10,0,9999);
}
第一个参数是要分解的数,第二个参数填0,第三个比要分解的数大即可
此版本没有重复
追问报错
追答![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/d50735fae6cd7b891c205981032442a7d9330e67?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
没毛病的