0124 - Permutari1

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se citeşte un număr natural nenul n. Să se afişeze, în ordine invers lexicografică, permutările mulţimii {1,2,..,n}.

Date de intrare[edit | edit source]

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

Date de ieşire[edit | edit source]

Fişierul de ieşire permutari1OUT.txt va conţine pe fiecare linie elementele unei permutări, separate prin câte un spaţiu.

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

  • 0 < n < 9

Exemplul 1[edit | edit source]

permutari1IN.txt

3

permutari1OUT.txt

3 2 1 
3 1 2 
2 3 1 
2 1 3 
1 3 2 
1 2 3 

Exemplul 2[edit | edit source]

permutari1IN.txt

10

consola

Eroare: Numărul n trebuie să fie în intervalul (0, 9).

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def verifica_restrictii(n):

   if not (0 < n < 9):
       print("Eroare: Numărul n trebuie să fie în intervalul (0, 9).")
       return False
   return True

def generate_permutations(n, current_permutation, output_file):

   if len(current_permutation) == n:
       output_file.write(" ".join(map(str, current_permutation[::-1])) + "\n")
       return
   for i in range(1, n + 1):
       if i not in current_permutation:
           generate_permutations(n, current_permutation + [i], output_file)

def main():

   with open("permutari1IN.txt", "r") as f:
       linie = f.readline().strip()
       if not linie:
           print("Eroare: Fișierul de intrare este gol sau conține doar linii goale.")
           return
       try:
           n = int(linie)
       except ValueError:
           print("Eroare: Numărul n nu poate fi convertit la întreg. Asigurați-vă că fișierul de intrare este formatat corect.")
           return
   if not verifica_restrictii(n):
       return
   with open("permutari1OUT.txt", "w") as output_file:
       generate_permutations(n, [], output_file)

if __name__ == "__main__":

   main()

</syntaxhighlight>