Cod sursa(job #1611674)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 24 februarie 2016 12:38:24
Problema Generare de permutari Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <utility>
#include <iterator>
#include <list>
using namespace std;

void _write_all_permutations(ofstream& g, vector<int>& v, vector<int>& cur){
    if(v.empty()){
        copy(cur.begin(), cur.end(), ostream_iterator<int>(g, " "));
        g << '\n';
        return;
    }
    for(int i = 0; i < v.size(); ++i){
        cur.push_back(v[i]);
        v.erase(v.begin()+i);
        _write_all_permutations(g, v, cur);
        v.insert(v.begin()+i, cur.back());
        cur.pop_back();
    }
}

void write_all_permutations(ofstream& g, const int n){
    vector<int> v(n), cur;
    for(int i = 0; i < n; ++i){
        v[i] = i+1;
    }
    _write_all_permutations(g, v, cur);
}

int main()
{
    ifstream f("permutari.in");
    ofstream g("permutari.out");
    int n;
    f >> n;

    write_all_permutations(g, n);
    return 0;
}