Cod sursa(job #2421866)

Utilizator 3l33tStefan Scoarta 3l33t Data 16 mai 2019 14:46:27
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("permutari.in");
ofstream out("permutari.out");
// Opgave
//
// Alle permutatie van de verzameling {1,2,3 ... N}
// Met getalen van N groot zonder herhalingen
//

// N>9 is niet aangeraden want het zou een heel grrot bestand dat je niet meer kunt openen


int n;
int nummer[16];

bool validate(int c){
    bool ok = 1;
    for(int i = 1; i < c; ++i){  // onderzoek of de cijfer nog een keer in de getaal vindt
        if(nummer[i] == nummer[c]){
            ok = 0; // een cijfer befind  zich nog een keer dus dit is niet goede oplosiingen kunnen opleveren
        }
    }

    return ok;
}

void backtracking(int c){

    for(int i = 1; i <=n; i++){ // ga door alle mogelijke toevoegingen
         nummer[c] = i; // voeg de nieuwe cijfer toe
        if(validate(c)){ // onderzoek of we verder kunnen gaan met deze cijfer
            if(c==n){ // aantal cijfers in de getal bereikt
                for(int i = 1; i <= n; ++i){
                    out << nummer[i] << " ";
                }
                out << "\n";
            }else{
                backtracking(c+1);
            }
        }
    }
}



int main()
{
    in >> n;
    backtracking(1);
    return 0;
}