👤

2. Sa se realizeze permutari lexicografice Input: XYZ Output : XYZ, XZY , YXZ, YZX, ZXY, ZYX

Răspuns :

Răspuns:

Daca x, y si z sunt numere de la 1 la n, si nu sunt doar trei, atunci programul arata asa:

#include <iostream>

#include <fstream>

using namespace std;

const int NMAX = 10;

int v[10];

char folosit[10];

void generare_perm( int n, int poz ) {

 int i;

 if ( poz == n ) {

   for ( i = 0; i < n; i++ )

     printf( "%d ", v[i] );

   printf( "\n" );

 } else

   for ( i = 1; i <= n; i ++ )

     if ( !folosit[i] ) {

      v[poz] = i;

       folosit[v[poz]] = 1;

       generare_perm( n, poz + 1 );

       folosit[v[poz]] = 0;

     }

}

int main() {

   int n;

   cin >> n;

   generare_perm( n, 0 );

   return 0;

}

Explicație:

Daca nu vrei sa scrii tot codul asta, poti folosi functia

next_permutation( v, v + n ), iti genereaza urmatoarea permutare, din c ++