Cod sursa(job #1820773)

Utilizator pe5teMihalache Rares pe5te Data 2 decembrie 2016 11:09:26
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include<fstream>
using namespace std;
ifstream fin("permutari.in");
ofstream fout("permutari.out");
int st[15],v[15],n,ams,ev,ok;
int valoare(int niv)
{
    if(niv<=n && st[niv]<n)
    {
        st[niv]++;
        ok=1;
    }
    return ok;
}
int valid(int niv)
{
    int i,ok;
    ok=1;
    for(i=1;i<niv;i++)
    {
        if(st[niv]<=st[i])
        ok=0;
    }
    return ok;
}
int solutie(int niv)
{
    if(niv==n)
        return 1;
    else
        return 0;
}
inline void tipar(int niv)
{
    int i;
    for(i=1;i<=niv;i++)
    {
        fout<<st[i]<<' ';
    }
    fout<<'\n';
}
void backtracking()
{
     int k=1,ams,ev;
     while(k>0)
     {
         do
         {
             ams=valoare(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()
{
    fin>>n;
    backtracking();
    fin.close();
    fout.close();
    return 0;
}