Cod sursa(job #2303918)

Utilizator Salamandra01Felmeri Zsolt Salamandra01 Data 17 decembrie 2018 11:11:44
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>

using namespace std;
int st[30], n;

bool lepes(int k)
{
    if(st[k] < n){
        st[k]++;
        return true;
    }
    return false;
}

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

bool megoldas(int k)
{
    return n == k;
}

void backTracking()
{
    int k = 1;
    bool van, jo;

    st[k] = 0;
    while(k){
        do{
            van = lepes(k);
            if(van){
                jo = ellenorzes(k);
            }
        }while(van && !jo);
        if(van){
            if(megoldas(k)){
                for(int i = 1; i <= k; ++i){
                    printf("%d ", st[i]);
                }
                printf("\n");
            }
            else{
                k++;
                st[k] = 0;
            }
        }
        else{
            k--;
        }
    }
}

int main()
{
    freopen("permutari.in", "r", stdin);
    freopen("permutari.out", "w", stdout);

    scanf("%d", &n);
    backTracking();

    return 0;
}