Cod sursa(job #1820723)

Utilizator dareare14Daria Petca dareare14 Data 2 decembrie 2016 10:29:55
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>

using namespace std;

ifstream F ("permutari.in");
ofstream G ("permutari.out");

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

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

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

int solutie(int niv)
{
    return niv == n;
}

void tipar(int niv)
{
    for(int i = 1; i <= niv; ++ i)
        G << st[i] << " ";
    G << '\n';
}

void backtr()
{
    int k = 1;
    while (k > 0)
    {
        do
        {
            ams  = pune_val(k);
            if(ams)
                ev = valid(k);
        }while (ams && !ev);

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

int main()
{
    F >> n;
    backtr();
    return 0;
}