Cod sursa(job #1450228)

Utilizator bulbulicaAlexandrescu Cristian bulbulica Data 12 iunie 2015 00:33:30
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>
using namespace std;

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

bool as,ev; int n,k;
void valid(int k, int v[], bool &ev)
{
    int i;
    ev = true;
    for( i = 0; i < k; ++i)
        if (v[i] == v[k])
        {
            ev = false;
            break;
        }
}
void suc(int k, int v[], bool &as)
{
    if( v[k]< n)
    {
        v[k]++;
        as = true;
    }
    else
        as = false;
}
void tipar(int k, int v[])
{
    int i;
    for(i = 0; i < n; ++i)
        out << v[i] <<" ";
    out << "\n";
}
bool solutie(int k)
{
    if(k == n-1)
        return 1;
    return 0;
}
int main()
{
    in >> n;
    int v[n];
    k = 0;
    v[k] = 0;
    while(k > -1)
    {
        do
        {
            suc(k,v,as);
            if(as)
                valid(k,v,ev);
        }
        while( as  && !(as && ev));
        if (as)
            if(solutie(k))
                tipar(k,v);
            else
            {
                k++;
                init(k,v);
            }
        else
        {
            init(k,v);
            k--;
        }
    }
    return 0;
}