Cod sursa(job #1403914)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 27 martie 2015 17:26:48
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;
ofstream g("permutari.out");
int n,st[17],k,uz[17],as,ev;
int aresuccesor()
{
    if(st[k]==n+1) return 0;
    else return 1;
}
void afis()
{
    for(int i=1;i<=k;i++)
    {
        g<<st[i]<<" ";
    }
    g<<'\n';
}
int main()
{
    freopen("permutari.in","r",stdin);
    scanf("%d",&n);
    st[1]=0;
    uz[0]=1;
    k=1;
    while(k>0)
    {
        as=1;
        ev=0;
        while(as&&!ev)
        {
            st[k]++;
            as=aresuccesor();
            ev=(uz[st[k]]==0);
        }
        if(as)
        {
            if(k==n) afis();
            if(k!=n)
            {
                uz[st[k]]=1;
                k++;
                st[k]=0;
            }
        }
        else
        {
            k--;
            uz[st[k]]=0;
        }
    }
    return 0;
}