Răspuns :
#include <cstring>
#include <iostream>
using namespace std;
char v[6]; // Vectorul solutie
int contor=0; //Contorizeaza nr de solutii
bool vocala(char x){
//Returneaza TRUE daca x este vocala; returneaza false daca e consoana
return strchr("aeiou", x);
}
bool valid(int n){
//Functie care verifica daca literele consecutive sunt valide
//Daca vectorul are un element nu putem compara cu elementul anterior; deci e valid.
if(n==1) return true;
//Daca avem doua vocale / consoane alaturate aceasta solutie nu e valida.
if(vocala(v[n]) == vocala(v[n-1])) return false;
return true;
}
void afisare(){
//Functie pentru afisarea solutiei
for(int i=1; i<=5; i++){
cout << v[i];
}
cout << endl;
//Incrementeaza nr de solutia
contor++;
}
void bkt(int n){
//Functie principala backtracking
//Itereaza fiecare litera
for(int i='a';i<='z';i++){
v[n] = i;
//Verifica daca pana aici solutia e valida
if(valid(n)){
//Verifica daca avem solutie completa (5 litere). Daca da afiseaza, daca nu treci la pozitia urmatoare
if(n==5) afisare();
else bkt(n+1);
}
}
}
int main(){
//Apelam funtia responsabila de backtracking
bkt(1);
//Afisam numarul de solutii
cout << contor;
}
Ar trebui precizat faptul ca numarul de solutii este imens (286650 de solutii mai exact), o sa dureze putin pana cand programul se executa complet.
Pentru celelalte probleme adauga te rog intrebare separata si voi incerca sa iti raspund.
Vă mulțumim pentru vizita pe platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de sprijin suplimentar, vă încurajăm să ne contactați. Revenirea dumneavoastră ne bucură, iar dacă v-a plăcut, nu uitați să adăugați site-ul nostru la favorite!