3913 - Cuvinte11

De la Universitas MediaWiki

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

Rezolvare

def generate_words(word, m, current_word, index, vowels_count):
    if len(current_word) >= m:
        print(current_word)
    if index == len(word):
        return

    for i in range(index, len(word)):
        if word[i] not in 'aeiou':
            generate_words(word, m, current_word + word[i], i + 1, 0)
        elif vowels_count == 0:
            generate_words(word, m, current_word + word[i], i + 1, 1)

word, m = input().split()
m = int(m)
generate_words(word, m, '', 0, 0)