1286 - submultimi1: Difference between revisions
Pagină nouă: == Cerinta == Se citește un număr natural nenul n. Să se afişeze, în ordine lexicografică, toate submulțimile nevide ale mulţimii {1,2,..,n} pentru care diferența dintre oricare două elemente este mai mare decât 1. == Date de intrare == Fişierul de intrare submultimi1.txt conţine pe prima linie numărul n. == Date de iesire == Fişierul de ieşire submultimi1.txt va conţine pe fiecare linie câte o submulțime, elementele unei submulțimi fiind separate pri... |
|||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
== Cerinta == | == Cerinta == | ||
Se citește un număr natural nenul n. Să se afişeze, în ordine lexicografică, toate submulțimile nevide ale mulţimii {1,2,..,n} pentru care diferența dintre oricare două elemente este mai mare decât 1. | Se citește un număr natural nenul '''n'''. Să se afişeze, în ordine lexicografică, toate submulțimile nevide ale mulţimii '''{1,2,..,n}''' pentru care diferența dintre oricare două elemente este mai mare decât '''1'''. | ||
== Date de intrare == | == Date de intrare == | ||
Fişierul de intrare | Fişierul de intrare '''submultimi1in.txt''' conţine pe prima linie numărul '''n'''. | ||
== Date de iesire == | == Date de iesire == | ||
Fişierul de ieşire | Fişierul de ieşire '''submultimi1out.txt''' va conţine pe fiecare linie câte o submulțime, elementele unei submulțimi fiind separate printr-un spațiu. | ||
== Restrictii si precizari == | == Restrictii si precizari == | ||
*1 | *1 ⩽ n ⩽ 10 | ||
*elementele fiecărei submulțimi vor fi afișate în ordine crescătoare | *elementele fiecărei submulțimi vor fi afișate în ordine crescătoare | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; | ;submultimi1in.txt | ||
:5 | :5 | ||
; | ;submultimi1out.txt | ||
:Datele introduse corespund restrictiilor impuse | |||
:1 | :1 | ||
:1 3 | :1 3 | ||
Line 35: | Line 35: | ||
== Exemplul 2 == | == Exemplul 2 == | ||
; | ;submultimi1in.txt | ||
:-9483 | :-9483 | ||
:Datele introduse nu corespund restrictiilor impuse | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python3" line="1"> | <syntaxhighlight lang="python3" line="1"> | ||
def | def verifica_restrictii(n): | ||
return 1 <= n <= 10 | |||
def genereaza_submultimi(n): | |||
submultimi = [] | |||
def backtrack(start, current): | |||
submultimi.append(current[:]) | |||
for i in range(start, n + 1): | |||
if not current or abs(current[-1] - i) > 1: | |||
current.append(i) | |||
backtrack(i + 1, current) | |||
current.pop() | |||
backtrack(1, []) | |||
return submultimi[1:] # Excludem mulțimea vidă | |||
# Citire din fișierul de intrare | |||
with open('submultimi1in.txt', 'r') as file: | |||
n = int(file.readline()) | |||
# | # Verificare restricții | ||
if verifica_restrictii(n): | |||
# Generare submulțimi | |||
rezultat = genereaza_submultimi(n) | |||
# | # Scriere în fișierul de ieșire | ||
with open( | with open('submultimi1out.txt', 'w') as file_out: | ||
for subset in rezultat: | |||
file_out.write(" ".join(map(str, subset)) + "\n") | |||
else: | |||
print("Date de intrare nevalide.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 13:22, 27 December 2023
Cerinta[edit | edit source]
Se citește un număr natural nenul n. Să se afişeze, în ordine lexicografică, toate submulțimile nevide ale mulţimii {1,2,..,n} pentru care diferența dintre oricare două elemente este mai mare decât 1.
Date de intrare[edit | edit source]
Fişierul de intrare submultimi1in.txt conţine pe prima linie numărul n.
Date de iesire[edit | edit source]
Fişierul de ieşire submultimi1out.txt va conţine pe fiecare linie câte o submulțime, elementele unei submulțimi fiind separate printr-un spațiu.
Restrictii si precizari[edit | edit source]
- 1 ⩽ n ⩽ 10
- elementele fiecărei submulțimi vor fi afișate în ordine crescătoare
Exemplul 1[edit | edit source]
- submultimi1in.txt
- 5
- submultimi1out.txt
- Datele introduse corespund restrictiilor impuse
- 1
- 1 3
- 1 3 5
- 1 4
- 1 5
- 2
- 2 4
- 2 5
- 3
- 3 5
- 4
- 5
Exemplul 2[edit | edit source]
- submultimi1in.txt
- -9483
- Datele introduse nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def verifica_restrictii(n):
return 1 <= n <= 10
def genereaza_submultimi(n):
submultimi = []
def backtrack(start, current): submultimi.append(current[:])
for i in range(start, n + 1): if not current or abs(current[-1] - i) > 1: current.append(i) backtrack(i + 1, current) current.pop()
backtrack(1, []) return submultimi[1:] # Excludem mulțimea vidă
- Citire din fișierul de intrare
with open('submultimi1in.txt', 'r') as file:
n = int(file.readline())
- Verificare restricții
if verifica_restrictii(n):
# Generare submulțimi rezultat = genereaza_submultimi(n)
# Scriere în fișierul de ieșire with open('submultimi1out.txt', 'w') as file_out: for subset in rezultat: file_out.write(" ".join(map(str, subset)) + "\n")
else:
print("Date de intrare nevalide.")
</syntaxhighlight>