0196 - Aranjamente: Difference between revisions
Pagină nouă: = Cerinţa = Se citesc două numere naturale nenule <code>n</code> și <code>k</code>. Să se afişeze, în ordine lexicografică, aranjamentele de câte <code>k</code> elemente ale mulţimii <code>{1,2,..,n}</code>. = Date de intrare = Fişierul de intrare <code>aranjamenteIN.txt</code> conţine pe prima linie numerele <code>n</code> și <code>k</code>, separate printr-un spatiu. = Date de ieşire = Fişierul de ieşire <code>aranjamenteOUT.txt</code> va conţine pe fiecar... |
|||
Line 33: | Line 33: | ||
4 5 | 4 5 | ||
consola | consola | ||
Nu corespunde restricțiilor | |||
== Rezolvare == | == Rezolvare == |
Latest revision as of 19:39, 9 December 2023
Cerinţa[edit | edit source]
Se citesc două numere naturale nenule n
și k
. Să se afişeze, în ordine lexicografică, aranjamentele de câte k
elemente ale mulţimii {1,2,..,n}
.
Date de intrare[edit | edit source]
Fişierul de intrare aranjamenteIN.txt
conţine pe prima linie numerele n
și k
, separate printr-un spatiu.
Date de ieşire[edit | edit source]
Fişierul de ieşire aranjamenteOUT.txt
va conţine pe fiecare linie câte k
valori, separate prin câte un spaţiu, reprezentând elementele unei aranjări. În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor".
Restricţii şi precizări[edit | edit source]
0 < k < n < 9
Exemplul 1[edit | edit source]
aranjamenteIN.txt
4 2
aranjamenteOUT.txt
1 2 1 3 1 4 2 1 2 3 2 4 3 1 3 2 3 4 4 1 4 2 4 3
Exemplul 2[edit | edit source]
aranjamenteIN.txt
4 5
consola
Nu corespunde restricțiilor
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def verifica_restrictii(n, k):
if not (0 < k < n < 9): print("Nu corespunde restricțiilor.") return False return True
def genereaza_aranjamente(n, k, aranjament_curent, numere_folosite, fisier_output):
if len(aranjament_curent) == k: fisier_output.write(" ".join(map(str, aranjament_curent)) + "\n") return
for i in range(1, n + 1): if i not in numere_folosite: numere_folosite.add(i) genereaza_aranjamente(n, k, aranjament_curent + [i], numere_folosite, fisier_output) numere_folosite.remove(i)
def main():
# Citirea datelor de intrare din fișier with open("aranjamenteIN.txt", "r") as fisier_intrare: n, k = map(int, fisier_intrare.readline().split())
# Verificarea restricțiilor if not verifica_restrictii(n, k): return
# Deschiderea fișierului de ieșire pentru scriere with open("aranjamenteOUT.txt", "w") as fisier_iesire: # Inițializarea listei de elemente și a setului de numere folosite aranjament_curent = [] numere_folosite = set()
# Generarea aranjamentelor și scrierea lor în fișierul de ieșire genereaza_aranjamente(n, k, aranjament_curent, numere_folosite, fisier_iesire)
if __name__ == "__main__":
main()
</syntaxhighlight>