Cod sursa(job #3150895)

Utilizator RatebaSerbanescu Andrei Victor Rateba Data 18 septembrie 2023 22:46:14
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAX_N = 8;

void backtracking(int curr_step, int n, bool este_fol[], int permutari[]) {

    // GOAL REACHED
    if (curr_step == n + 1) {
        
        for (int i = 1; i <= n; i++) {
            fout << permutari[i] << ' ';
        }

        fout << endl;

        return;
    }

    for (int i = 1; i <= n; i++) {

        // if CHOICE is VALID
        if (!este_fol[i]) {

            // make choice
            este_fol[i] = 1;
            permutari[curr_step] = i;

            backtracking(curr_step + 1, n, este_fol, permutari);
            
            // undo choice
            este_fol[i] = 0;
        }
    }
}

int main() {
    bool este_fol[MAX_N + 1] = {0};
    int permutari[MAX_N + 1];

    int n;
    fin >> n;

    backtracking(1, n, este_fol, permutari);

    return 0;
}