3914 - Cuvinte12

From Bitnami MediaWiki

Cerința[edit | edit source]

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[edit | edit source]

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

Date de ieșire[edit | edit source]

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

Restricții și precizări[edit | edit source]

  • 1 < m ≤ lungimea lui S ≤ 10

Exemplu:[edit | edit source]

Intrare

barni 3

Ieșire

a
ab
abi
ai
ain
air
an
ar
i
in
ir

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3"> def generate_words(word, m, current_word, index, vowels_count):

   if len(current_word) > m or (len(current_word) > 0 and current_word[-1] in 'aeiou'):
       return
   if len(current_word) > 0:
       print(current_word)
   if index == len(word):
       return
   for i in range(index, len(word)):
       if word[i] in 'aeiou':
           generate_words(word, m, current_word + word[i], i + 1, 1)
       else:
           generate_words(word, m, current_word + word[i], i + 1, 0)


word, m = input().split() m = int(m) word = .join(sorted(word, key=lambda x: 'aeiou'.index(x) if x in 'aeiou' else 99)) generate_words(word, m, , 0, 0) </syntaxhighlight>