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ăspunsuri la întrebare
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);
}
}