Cod sursa(job #1457565)

Utilizator tony.hegyesAntonius Cezar Hegyes tony.hegyes Data 3 iulie 2015 17:28:21
Problema Generare de permutari Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
#include <iostream>
using namespace std;

///// DESCRIPTION
// THIS PROGRAM FINDS ALL PERMUTATIONS
// OF NUMBERS BETWEEN 1 AND n
// BY USING BACKTRACKING
/////

void permutations(ostream&, int, int[], bool[], int);
void output(ostream&, int[], int);

int main(int argc, char **argv)
{
	// INPUT
	int n;
	
	ifstream indata("permutari.in");
	indata >> n;
	indata.close();
	
	// GENERATION AND OUTPUT OF PERMUTATIONS
	ofstream outdata("permutari.out");
	freopen("permutari.out", "w", stdout);
	int stack[n]; bool used[n];
	for (int i = 0; i < n; i++) {
		used[i] = false;
	}
	permutations(outdata, n, stack, used, 0);
		
	outdata.close();
	
	return 0;
}

void permutations(ostream& outdata, int n, int stack[], bool used[], int step) {
	for (int i = 1; i <= n; i++) {
		if (used[i] == true) {
			continue;
		}
		
		stack[step] = i;
		used[i] = true;
		
		if (step < n-1) {
			permutations(outdata, n, stack, used, step+1);
		} else {
			
			printf("1\n");
			//output(outdata, stack, n);
		}
		
		used[i] = false;
	}
}

void output(ostream& outdata, int permutation[], int n) {
	for (int i = 0; i < n; i++) {
		outdata << permutation[i] << " ";
	}
	outdata << "\n";
}