Cod sursa(job #1751497)

Utilizator dtoniucDaniel Toniuc dtoniuc Data 1 septembrie 2016 15:02:46
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <queue>
#include <climits>

using namespace std;

void Backtrack(int pos, int n, int* vect, bool* flagList, ostream& fout);
void PrintSolution(int n, int* vect, ostream& fout);

int main()
{
	ifstream fin;
	ofstream fout;
	fout.open("permutari.out");
	fin.open("permutari.in");

	int n;
	fin >> n;
	int* vect = new int[n + 1]();
	bool* flagVect = new bool[n + 1]();

	Backtrack(1, n, vect, flagVect, fout);

	fin.close();
	fout.close();
	return 0;
}

void Backtrack(int pos, int n, int* vect, bool* flagList, ostream& fout)
{
	if(pos > n)
	{
		PrintSolution(n, vect, fout);
	}
	else
	{
		for(int i = 1; i <= n; i++)
		{
			if(flagList[i] == false)
			{
				flagList[i] = true;
				vect[pos] = i;
				Backtrack(pos + 1, n, vect, flagList, fout);
				flagList[i] = false;
			}
		}
	}
}

void PrintSolution(int n, int* vect, ostream& fout)
{
	for(int i = 1; i <= n; i++)
	{
		fout << vect[i] << " ";
	}

	fout << "\n";
}