Cod sursa(job #1676607)

Utilizator m.scarlat95Scarlat Marius-George m.scarlat95 Data 6 aprilie 2016 00:34:14
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("permutari.in");
ofstream fout("permutari.out");

int n, sol[100];
bool app[100];

/*
bool succesor(int k)
{
	if(sol[k] < n)
	{
		sol[k] ++;
		return true;
	}
	return false;
}

bool valid(int k)
{
	if(!app[sol[k]])
	{
		app[sol[k]] = true;
		return true;
	}
	return false;
}

void bkt(int k)
{
	if(solution(k))
	{
		display();
	}
	else
	{
		init(k);

		while(succesor(k))
		{
			if(valid(k))
			{
				bkt(k + 1);
				app[sol[k]] = false;
			}
		}
	}
}
*/

void init(int k)
{
	sol[k] = 0;
}


int solution(int k)
{
	return k == n+1;
}

void display()
{
	for(int i = 1; i <= n; ++i)
	{
		fout << sol[i] << " ";
	}
	fout << endl;
}

void bkt(int k)
{
	if(solution(k))
	{
		display();
		return;
	}
	else
	{
		init(k);
		for(int i = 1; i <= n; ++i)
		{
			if(!app[i])
			{
				sol[k] = i;
				app[i] = true;
				bkt(k+1);
				app[i] = false;
			}
		}
	}
}


int main(void)
{
	fin >> n;
	for(int i = 1; i <= n; ++i)
	{
		app[i] = false;
	}

	bkt(1);
	return 0;
}