Vrog mult in c++
Folosind metoda backtracking sa se genereze în ordine lexicografică cuvintele de câte patru litere din multimea A={a,b,c,d,e}, cuvinte care nu conțin doua vocale alăturate. Primele 8 cuvinte generate sunt, in ordine: abab, abac, abad, abba, abbb, abbc, abbd, abbe

Răspuns :

Răspuns:

#include <iostream>

using namespace std;

char x[20];

void afisare(int k);

bool vocala(char s);

bool ok(int k);

bool solutie(int k);

void backtracking(int k);

int main()

{

   backtracking(1);

   return 0;

}

void afisare(int k){

   for(int i=1; i<=k; ++i)

       cout << x[i] << ' ';

   cout << endl;

}

bool vocala(char s){

   if(s == 'a' || s == 'e')

       return true;

   return false;

}

bool ok(int k){

   for(int i=1; i<k; ++i)

       if(vocala(x[i]) && vocala(x[i+1]))

           return false;

   return true;

}

bool solutie(int k){

   return (k == 4);

}

void backtracking(int k){

   for(char i='a'; i<='e'; ++i){

       x[k] = i;

       if(ok(k))

           if(solutie(k))

               afisare(k);

           else

               backtracking(k + 1);

   }

}