Cod sursa(job #2171215)

Utilizator tigeraOprea Tereza Emilia tigera Data 15 martie 2018 11:34:45
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>

using namespace std;

ifstream fin ("permutari.in");
ofstream fout ("permutari.out");

int n, st[10], i, ams, ev;

int pune_val (int niv)
{
    int ok = 0;
    if (niv <= n && st[niv] < n)
    {
        st[niv]++;
        ok = 1;
    }
    return ok;
}

int validare (int niv)
{
    int ok = 1;
    for (i=1; i<niv; i++)
        if (st[i] == st[niv])
            ok = 0;
    return ok;
}

int solutie (int niv)
{
    if (n == niv)
        return 1;
    return 0;
}

void tipar ()
{
    for (i=1; i<=n; i++)
        fout << st[i] << ' ';
    fout << '\n';
}

void backtr()
{
    int niv = 1;
    while (niv>0)
    {
        do
        {
            ams = pune_val (niv);
            if (ams == 1)
                ev = validare (niv);
        }
        while (ams == 1 && ev == 0);

        if (ams == 1 && ev == 1)
        {
            if (solutie (niv) == 1)
                tipar ();
            else
            {
                niv++;
                st[niv] = 0;
            }
        }
        else
            niv--;
    }

}

int main ()
{
    fin >> n;
    backtr();
}