0124 - Permutari1
De la Universitas MediaWiki
Cerinţa
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
Fişierul de intrare permutari1IN.txt
conţine pe prima linie numărul n
.
Date de ieşire
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
0 < n < 9
Exemplul 1
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
permutari1IN.txt
10
consola
Eroare: Numărul n trebuie să fie în intervalul (0, 9).
Rezolvare
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()