# PBinfo #3996 – back_abc3 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se citește un număr natural n. Afișați în ordine lexicografică toate cuvintele care sunt formate din n litere mari, care au literele ordonate alfabetic strict crescător și în care numărul de vocale este mai mare decât numărul de consoane.

Date de intrare
Programul citește de la tastatură numerul n.

Date de ieșire
Programul va afișa pe ecran pe linii separate cuvintele cerute. Cuvintele se vor afișa în ordine lexicografică.

Restricții și precizări

1 ≤ n ≤ 9.

Exemplu:
Intrare

3
Ieșire

ABE
ABI
ABO
ABU
ACE
ACI
ACO
ACU
ADE
ADI
ADO
ADU
AEF
AEG
AEH
AEI
AEJ
AEK
AEL
AEM
AEN
AEO
AEP
AEQ
AER
AES
AET
AEU
AEV
...
IUW
IUX
IUY
IUZ
JOU
KOU
LOU
MOU
NOU
OPU
OQU
ORU
OSU
OTU
OUV
OUW
OUX
OUY
OUZ
Explicație
Pentru n=3 se obțin 220 de cuvinte.

## Cod sursă C++

```cpp
#include <iostream>
#include <cstring>
using namespace std;
int n,X[10];
int ok(int k)
{
    int cv=0;
    for(int i=1;i<=k;i++)
        if(strchr("AEIOU",('A'+X[i]-1))) cv++;
    if(k==n && cv<=k-cv) return 0;
    return 1;
}
void afisare()
{
    for(int i=1;i<=n;i++)
        cout<<(char)('A'+X[i]-1);
    cout<<"\n";
}
void back(int k)
{
    for(int i=X[k-1]+1;i<=26;i++)
    {
        X[k]=i;
        if(ok(k))
            if(k==n) afisare();
            else back(k+1);
    }
}
int main()
{
    cin>>n;
    back(1);
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3996)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3996/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3996/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
