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