Cod sursa(job #1862084)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 29 ianuarie 2017 15:22:41
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <cstdio>
#include <bitset>


FILE *in,*out;

using namespace std;

const int nmax = 9;

int n;
int sol[nmax]; //sol[0] = 0; sol[1] = 2; sol[2] = 1
bitset<nmax> visited;

//exploreaza-mi, te rog, spatiul solutiilor
void explore(int k) {
  if(k==n) { //we found a solution
    for(int i = 0; i < n;i ++){
      fprintf(out,"%d ",sol[i]+1);
    }
    fprintf(out,"\n");
  } else {
    for(int i=0; i<n; i++) {
      if(visited[i] == 0) { //linia e libera, e bine
        sol[k] = i;
        visited[i] = 1;
        explore(k + 1); //e un apel recursiv
        //te intorci din recursie aici
        visited[i] = 0;
      }
    }
  }
}

int main() {
  in = fopen("permutari.in","r");
  out = fopen("permutari.out","w");
  fscanf(in,"%d",&n);
  explore(0);
  return 0;
}