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.