Cod sursa(job #3211660)

Utilizator YuzukyIstrate Andreea Ruxandra Yuzuky Data 9 martie 2024 20:01:21
Problema Generare de permutari Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("permutari.in");
ofstream out("permutari.out");
int v[9], marked[9], n;
//verificam de fiecare data cand introducem o valoare in vector, daca aceasta a mai fost deja introdusa.
//Vom folosi un vector caracteristic
// avem completate toate pozitiile de la 1 la pos - 1
// vrem sa completam pozitia pos
void bkt(int pos)
{
    if(pos==n+1)
    {
        //am completat toate positiile, stim deja ca e o permutare, ne-am asigurat cand am construit solutia
        //afisam
        for(int i=1; i<=n; ++i)
            out<<v[i]<<" ";
        out<<'\n';
    }
    else
    {
        //completam pozitia pos
        //trecem prin toate valorile posibile
        for(int val=1; val<=n; ++val)
        {
            if(!marked[val]) //daca valoarea nu e marcata, adica marked[val]==0
            {
                v[pos]=val; //scriem valoarea in vector la positia pos
                marked[val]=true; //marcam valoarea ca finnd folosita
                bkt(pos+1);  //apelam functia pentru pos+1
                marked[val]=false; //la intoarcere, nu mai e folosita, o demarcam
            }
        }
    }

}
int main()
{
    in>>n;
    for(int i=1; i<=n; ++i)
        v[i]=i;
    bkt(1);
    return 0;
}