0344 - Paranteze

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se dă un număr natural par n. Generați toate șirurile de n paranteze rotunde care se închid corect.

Date de intrare[edit | edit source]

Fişierul de intrare paranteze.in conţine pe prima linie numărul n.

Date de ieşire[edit | edit source]

Fişierul de ieşire paranteze.out va conţine pe fiecare linie câte un șir de n paranteze rotunde care se închid corect. Șirurile vor fi afișate în ordine lexicografică, considerând paranteza deschisa ( mai mică decât paranteza închisă ).

Restricţii şi precizări[edit | edit source]

1 ≤ n ≤ 20, număr natural par ==Exemplu==: paranteze.in

6 paranteze.out

((())) (()()) (())() ()(()) ()()()

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def generate_parentheses(n, current, open_count, close_count):

  if open_count == close_count == n:
      print("".join(current))
      return
  if open_count < n:
      generate_parentheses(n, current + ['('], open_count + 1, close_count)
  if close_count < open_count:
      generate_parentheses(n, current + [')'], open_count, close_count + 1)

if __name__ == "__main__":

  try:
      n = int(input("Introduceți n (număr natural par): "))
      
      if n % 2 == 0:
          generate_parentheses(n, [], 0, 0)
      else:
          print("Introduceți un număr par.")
  except ValueError:
      print("Introduceți un număr natural par.")

</syntaxhighlight>