Cod sursa(job #3168856)

Utilizator proflaurianPanaete Adrian proflaurian Data 13 noiembrie 2023 16:08:08
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("permutari.in");
ofstream g("permutari.out");
int n,p[10],viz[10];
void bkt(int poz)
{
    if(poz==n+1)
    {
        for(int i=1; i<=n; i++)
            g<<p[i]<<' ';
        g<<'\n';
    }

    for(int k=1; k<=n; k++)
        if(!viz[k])
        {
            p[poz]=k;
            viz[k]=1;
            bkt(poz+1);
            viz[k]=0;
        }
}
int main()
{
    f>>n;
    bkt(1);
    return 0;
}


//back - > se controleaza pozitia la care s-a ajuns in permutare
//daca s-a ajuns la poz n+1 => conditie de oprire-> afisare
//altfel
//-> se considera toate valorile nefolosite pana la poz
//    -> se aseaza succesiv pe acea pozitie si
//    se apleaza back la pozitia urmatoare
//    -> valorile nefolosite se folosesc in ordine crescatoare
//    => permutarile vor fi generate lexicografic
//    optimizari :
//        -> tinem un vector de marcaj(sau de vizitare) pentru a
//        memora ce valori au fost deja utilizate
//