C语言如何将一个整数拆分成若干个奇数相加

写出所有可能形式,如5=1+1+1+1+1=1+1+3
允许重复

#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,第三个比要分解的数大即可

此版本没有重复

追问

报错

追答


没毛病的

温馨提示:答案为网友推荐,仅供参考
相似回答