# PBinfo #3914 – Cuvinte12 – Rezolvare C++

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

## Enunț

Cerința
Se citește un cuvânt S format din litere mici distincte ale alfabetului englez și un număr m. Afișați în ordine lexicografică toate cuvintele formate din cel mult m litere ordonate alfabetic din S, în care nu există consoane alăturate și încep cu vocală.

Date de intrare
Programul citește de la tastatură cuvântul S și numărul m.

Date de ieșire
Programul va afișa pe ecran cuvintele cerute, câte unul pe un rând.

Restricții și precizări

1 < m ≤ lungimea lui S ≤ 10

Exemplu:
Intrare

barni 3
Ieșire

a
ab
abi
ai
ain
air
an
ar
i
in
ir

## Cod sursă C++

```cpp
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
char S[11];
int m , n , x[11];
void Afisare(int L)
{
    for(int i = 0 ; i < L ; i ++)
        cout << S[x[i]];
    cout << '\n';
}
bool ok(int k)
{
	if(k == 0)
	{
		if(strchr("aeiou" , S[x[k]]) == NULL)
			return false;
		return true;
	}
	if(strchr("aeiou" , S[x[k]]) == NULL && strchr("aeiou" , S[x[k-1]]) == NULL)
		return false;
    return true;
}
void Back(int k)
{
	int start = 0;
	if(k > 0)
		start = x[k-1] + 1;
    for(int i = start ; i < n ; i ++)
    {
        x[k] = i;
        if(ok(k))
        {
			if(k < m)
			{
				Afisare(k + 1);
				Back(k+1);
			}
        }
    }
}
int main()
{
    cin >> S >> m;
    n = strlen(S);
    sort(S , S + n);
    Back(0);
    return 0;
}
```

## Resurse

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