Cod sursa(job #2470391)

Utilizator stormy_weatherelena cristina stormy_weather Data 9 octombrie 2019 09:34:31
Problema Generare de permutari Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;

int generate_perm(int pos, int n, vector<int> &cur_perm, vector<vector <int>> &perm) {
  if (pos == n + 1) {
    perm.push_back(cur_perm);
    return 1;
  }
  for (int i = 1; i <= n; i++) {
    if (find(cur_perm.begin(), cur_perm.begin() + pos + 1, i) > cur_perm.begin() + pos) {
      cur_perm[pos] = i;
      generate_perm(pos + 1, n, cur_perm, perm);
    }
  }
  return 1;
}

int main() {
  #ifdef INFOARENA
  ifstream cin("permutari.in");
  ofstream cout("permutari.out");
  #endif

  int n; cin >> n;
  vector<int> cur_perm(n + 1, -1);
  vector<vector <int>> perm;
  generate_perm(1, n, cur_perm, perm);
  for (int i = 0; i < (int)perm.size(); i++) {
    for (int j = 1; j <= n; j++)
      cout << perm[i][j] << " ";
    cout << "\n";
  }
  return 0;
}