# PBinfo #3913 – Cuvinte11 – 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 puțin m litere ordonate alfabetic din S, în care nu există vocale alăturate și se termină cu consoană.

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

abin
abinr
abir
abn
abnr
abr
anr
bin
binr
bir
bnr
inr

## 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)
		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 - 1 && strchr("aeiou", S[x[k]]) == NULL)
				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/3913)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3913/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3913/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
