Cod sursa(job #319761)

Utilizator SliMMStefan Saftescu SliMM Data 2 iunie 2009 00:15:55
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
/*
 * permutari.cpp
 *
 *  Created on: Jun 1, 2009
 *      Author: stefan
 */
#include <iostream>
#include <cstdlib>
#include <cstdio>

using namespace std;

inline void afisare(int* stiva, int n)
{
	for(int i=0;i<n;++i) cout << stiva[i] << " ";
	cout << endl;
}

inline bool valid(int *stiva, int k)
{
	int nr[8];
	memset(nr,0,sizeof(nr));

	for(int i=0; i<=k; ++i)
		if(nr[stiva[i]-1]) return false;
		else ++nr[stiva[i]-1];

	return true;
}

void back(int* stiva, int n, int k)
{
	if(k==n) afisare(stiva, n);
	else
		for(stiva[k]=1;stiva[k]<=n;++stiva[k])
			if(valid(stiva, k)) back(stiva, n, k+1);
}

int main()
{
	freopen("permutari.in", "r", stdin);
	freopen("permutari.out", "w", stdout);

	int n, stiva[8];
	cin >> n;
	back(stiva, n, 0);

	return 0;
}