3914 - Cuvinte12

From Bitnami MediaWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

Rezolvare

<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>