0344 - Paranteze: Difference between revisions
Pagină nouă: ==Cerinţa== Se dă un număr natural par n. Generați toate șirurile de n paranteze rotunde care se închid corect. ==Date de intrare== Fişierul de intrare paranteze.in conţine pe prima linie numărul n. ==Date de ieşire== 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ă )... |
No edit summary |
||
Line 22: | Line 22: | ||
()()() | ()()() | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python3" line="1"> | |||
def generate_parentheses(n, current, open_count, close_count): | 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> |
Latest revision as of 18:13, 11 January 2024
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>