Sunteți pe pagina 1din 1

Fie n>0, natural.

Să se scrie un program care să afişeze toate partiţiile unui


număr natural n.
Numim partiţie a unui număr natural nenul n o mulţime de numere naturale
nenule {p1, p2, …, pk} care îndeplinesc condiţia p1+p2+ …+pk = n.

Varianta C/C++:

#include<iostream.h>
int n, ns,sol[20];
void afis(int l)
{ int i;
ns++;
cout<<"Solutia nr. "<< ns<<" : ";
for(i=1;i<=l;i++) cout<<sol[i]<<" ";
cout<<endl;
}
void back(int i, int sp)
{ int j;
if (sp==n) afis(i-1);
else for(j=1;j<=n-sp;j++)
if (j>=sol[i-1])
{
sol[i]=j;
back(i+1, sp+j);
}
}
void main()
{
cin>>n;
ns=0;
back(1,0);
cout<<ns<<" solutii";
}

S-ar putea să vă placă și