Cod sursa(job #526804)

Utilizator icepowdahTudor Didilescu icepowdah Data 29 ianuarie 2011 15:10:34
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
using namespace std;

#define MAXN 8

ifstream f("permutari.in");
ofstream g("permutari.out");

int inPermutation = 0;

void gen_permutari(int solution[], int N, int k);

int main(void)
{
	int N;
	int solution[MAXN+1];

	f >> N;
	gen_permutari(solution, N, 0);

	f.close();
	g.close();
	return 0;
}

void gen_permutari(int solution[], int N, int k)
{
	if (k == N)
	{
		for (int i=1;i<=k;i++)	
		{
			g << solution[i] << " ";
		}
		g << "\n";
	}
	else 
	{		
		int i;
		
		k++;
		for (i=1;i<=N;i++)
		{
			if (!((inPermutation >> i)&1))
			{
				solution[k] = i;
				inPermutation |= (1<<i);
				gen_permutari(solution,N,k);
				inPermutation ^= (1<<i);
			}
		}
	}
}