Cod sursa(job #1108879)

Utilizator acelasiStanciu Rares acelasi Data 16 februarie 2014 14:39:42
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;

int n, sol[10];
ofstream g("permutari.out");
void init(int k)
{
    sol[k] = 0;
}

int succesor(int k)
{
    if(sol[k] < n)
    {
        sol[k]++;
        return 1;
    }
    else
        return 0;
}

int valid(int k)
{
    for (int i = 1; i <= k - 1; i++)
        if(sol[k] == sol[i])
            return 0;
    return 1;
}

int solutie(int k)
{
    return (k == n+1);
}

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

void backtrack(int k)
{
    if (solutie(k))
        tipar();
    else
    {
        init(k);
        while(succesor(k))
            if(valid(k))
                backtrack(k + 1);
    }
}

int main()
{
    ifstream f("permutari.in");
    f >> n;
    f.close();
    backtrack(1);
    g.close();
    return 0;
}