Probleme rezolvate cu solutie variabila

Generarea partitiilor unui numar natural

Enunț: Se citește un număr natural n. Se cere să se tiparească toate modurile de descompunere a lui ca sumă de numere naturale. De exemplu, pentru n=4, avem:4,31,22,211,13,121,112,1111. (ordinea din suma nu este importanta)

#include<iostream.h>
int sol[100],n,i,s;
void bk(int k)
{ if (==n)
{ for (i=1;i<=n;i++)
cout<<sol[i];
cout<<endl;
}
else
{sol[k]=0;
while(sol[k]+s<n)
{ sol[k]++;
s+=sol[k];
bk(k+1);
s-=sol[k];}
}
}
void main()
{cin>>n;
bk(1);}