Cod sursa(job #2036429)

Utilizator robuvedVictor Robu robuved Data 10 octombrie 2017 17:56:28
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>
using namespace std;

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

void AfiseazaVector(vector<int> &v)
{
	for (int i = 1; i < v.size(); i++)
		out << v[i] << ' ';

	out << '\n';
}
void ShiftLeft(vector<int> &v, int k)
{
	int temp = v[k];
	for (int i = k + 1; i < v.size(); i++)
	{
		v[i - 1] = v[i];
	}
	v.back() = temp;
}
void GenereazaPermutari(vector<int>& v, int k)
{
	if (k >= v.size() - 1)
	{
		AfiseazaVector(v);
		return;
	}
	for (int i = k; i < v.size(); i++)
	{
		swap(v[k], v[i]);
		GenereazaPermutari(v, k + 1);
	}
	ShiftLeft(v, k);
}
int main()
{
	int N;
	in >> N;
	vector<int> v(N + 1, 0);
	for (int i = 1; i <= N; i++)
	{
		v[i] = i;
	}
	GenereazaPermutari(v, 1);
}