Cod sursa(job #1557161)

Utilizator jordasIordache Andrei Alexandru jordas Data 26 decembrie 2015 21:03:34
Problema Generare de permutari Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#define nMax 9
#include <fstream>
#include <list>
#include <queue>

using namespace std;

 ifstream x ("permutari.in");
 ofstream y ("permutari.out");

 int n;
 bool viz[nMax];
 list<int> node[nMax];
 queue<int> q;

 void magic(int a)
 {
     for(int i=a-1;i>0;i--)
     {
         node[a].push_back(i);
         node[i].push_back(a);
     }

     if(a<n)
        magic(++a);
 }

 void show(queue<int> q)
 {
     while(!q.empty())
     {
         y<<q.front()<<' ';
         q.pop();
     }

     y<<'\n';
 }

 void hocus_pocus(int a, bool viz[], queue<int> q)
 {
     viz[a]=true;
     q.push(a);

     for(list<int>::const_iterator i=node[a].begin(); i!=node[a].end(); i++)
        if(!viz[*i])
            hocus_pocus(*i,viz,q);

    viz[a]=false;

    if(q.size()==n)
        show(q);
 }

int main()
{
    x>>n;

    magic(2);

    for(int i=1;i<=n;i++)
        hocus_pocus(i,viz,q);

    return 0;
}