0344 - Paranteze: Difference between revisions

From Bitnami MediaWiki
Mraa (talk | contribs)
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ă )...
 
Mraa (talk | contribs)
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:
  if open_count == close_count == n:
        generate_parentheses(n, current + ['('], open_count + 1, close_count)
      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 close_count < open_count:
if __name__ == "__main__":
        generate_parentheses(n, current + [')'], open_count, close_count + 1)


if __name__ == "__main__":
  try:
    try:
      n = int(input("Introduceți n (număr natural par): "))
        n = int(input("Introduceți n (număr natural par): "))
     
       
      if n % 2 == 0:
        if n % 2 == 0:
          generate_parentheses(n, [], 0, 0)
            generate_parentheses(n, [], 0, 0)
      else:
        else:
          print("Introduceți un număr par.")
            print("Introduceți un număr par.")
  except ValueError:
    except ValueError:
      print("Introduceți un număr natural par.")
        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>