0125 - Permutari2
De la Universitas MediaWiki
Cerinţa
Se citeşte un număr natural nenul n
, apoi n
numere naturale distincte. Să se afişeze, în ordine lexicografică, permutările mulţimii formate din cele n
numere citite.
Date de intrare
Fişierul de intrare permutari2IN.txt
conţine pe prima linie numărul n
, ia r pe a doua linie n
numere naturale.
Date de ieşire
Fişierul de ieşire permutari2OUT.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
- cele
n
numere de pe a doua linie a fişierului de intrare sunt mai mici decât100
Exemplu:
permutari2IN.txt
3 4 7 3
permutari2OUT.txt
3 4 7 3 7 4 4 3 7 4 7 3 7 3 4 7 4 3
Exemplul 2
permutari2IN.txt
10 4 7 3
consola:
Eroare: Numărul n trebuie să fie între 0 și 9.
Rezolvare
def verifica_restrictii(n, numere):
if not (0 < n < 9):
print("Eroare: Numărul n trebuie să fie între 0 și 9.")
return False
if len(numere) != n or len(set(numere)) != n or any(x >= 100 for x in numere):
print("Eroare: Introduceți n numere naturale distincte mai mici decât 100.")
return False
return True
def generate_permutations(n, current_permutation, numere, output_file):
if len(current_permutation) == n:
output_file.write(" ".join(map(str, current_permutation)) + "\n")
return
for numar in sorted(numere):
if numar not in current_permutation:
generate_permutations(n, current_permutation + [numar], numere, output_file)
def main():
with open("permutari2IN.txt", "r") as f:
n = int(f.readline())
numere = list(map(int, f.readline().split()))
if verifica_restrictii(n, numere):
with open("permutari2OUT.txt", "w") as output_file:
generate_permutations(n, [], numere, output_file)
if __name__ == "__main__":
main()