Cod sursa(job #1010679)

Utilizator PsychoAlexAlexandru Buicescu PsychoAlex Data 15 octombrie 2013 13:40:23
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>

std::ifstream fin("permutari.in");
std::ofstream fout("permutari.out");

void printSol(int n, int s[])
{
    for(int i = 1; i <= n; i++)
    {
        fout<<s[i]<<' ';
    }
    fout<<'\n';
}

bool succesor(int k, int n, int s[])
{
    if(s[k] < n)
    {
        s[k]++;
        return true;
    }
    return false;
}

bool valid(int k, int s[])
{
    for(int i = 1; i < k; i++)
    {
        if(s[i] == s[k])
        {
            return false;
        }
    }
    return true;
}

void back(int k, int n, int s[])
{
    if(k == n + 1)
    {
        printSol(n, s);
    }
    else
    {
        s[k] = 0;
        while(succesor(k, n, s))
        {
            if(valid(k, s))
            {
                back(k+1, n, s);
            }
        }
    }
}

int main()
{
    int n, s[9];
    fin>>n;
    back(1, n, s);
    return 0;
}