Pagini recente » Cod sursa (job #166229) | Cod sursa (job #1235139) | Cod sursa (job #731095) | Cod sursa (job #2591263) | Cod sursa (job #1511374)
#include <iostream>
#include <cstdio>
using namespace std;
const int dmax = 10;
int n; int sol[dmax+1];
void afisare(int m)
{
int i,j;
for(int i = 1; i <= m; i++) // PARCURGEM SUBMULTIMILE
{
for(int j = 1; j <= n; j++)
if(sol[j] == i) // j apatine submultimii i
cout << j <<" ";
if(i < m) cout <<"; ";
else
cout << '\n';
}
}
void bkt(int p, int m) // m - maximul de pana acum, nr de submultimi folosite
{
if(p - 1 == n) afisare(m);
else
{
for(int i = 1; i <= m; i++)
{
// PUN p IN SUBMULTIMEA i
sol[p] = i;
bkt(p+1,m);
}
sol[p] = m + 1;
bkt(p+1, m +1);
}
}
int main()
{
freopen("partmult.in", "r", stdin);
freopen("partmult.out", "w", stdout);
cin >> n;
bkt(1,0);
return 0;
}