0125 - Permutari2
Cerinţa[edit | edit source]
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[edit | edit source]
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[edit | edit source]
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[edit | edit source]
0 < n < 9
- cele
n
numere de pe a doua linie a fişierului de intrare sunt mai mici decât100
Exemplu:[edit | edit source]
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[edit | edit source]
permutari2IN.txt
10 4 7 3
consola:
Eroare: Numărul n trebuie să fie între 0 și 9.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> 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()
</syntaxhighlight>