Cod sursa(job #1591870)

Utilizator sebii_cSebastian Claici sebii_c Data 6 februarie 2016 19:51:56
Problema Generare de permutari Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

template <class T>
void permutation(const vector<T>& v, ostream & fout=cout) {
    static vector<T> current;
    static vector<bool> taken(v.size(), false);

    vector<T> result;
    if (current.size() == v.size()) {
	for (auto x : current) {
	    fout << x << " ";
	}
	fout << endl;
    } else {
	for (size_t i = 0; i < v.size(); ++i) {
	    if (!taken[i]) {
		taken[i] = true;
		current.push_back(v[i]);
		permutation(v, fout);
		current.pop_back();
		taken[i] = false;
	    }
	}
    }
}

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

    int n; fin >> n;
    vector<int> nums;
    for (int i = 1; i <= n; ++i)
	nums.push_back(i);

    permutation(nums, fout);
    
    return 0;
}