Cod sursa(job #1511329)

Utilizator mihai.constantinConstantin Mihai mihai.constantin Data 26 octombrie 2015 16:11:53
Problema Copii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#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;
}