0198 - Submultimi: Difference between revisions

From Bitnami MediaWiki
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}. == Date de intrare == Fişierul de intrare submultimi.txt conţine pe prima linie numărul n. == Date de iesire == Fişierul de ieşire submultimi.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 == *1 ≤ n ≤ 10 == Exemplul 1...
 
 
(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}.
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}'''.


== Date de intrare ==
== Date de intrare ==


Fişierul de intrare submultimi.txt conţine pe prima linie numărul n.
Fişierul de intrare '''submultimiin.txt''' conţine pe prima linie numărul '''n'''.


== Date de iesire ==
== Date de iesire ==


Fişierul de ieşire submultimi.txt va conţine pe fiecare linie câte o submulțime, elementele unei submulțimi fiind separate printr-un spațiu.
Fişierul de ieşire '''submultimiout.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 n 10
*1 ⩽ n ⩽ 10


== Exemplul 1 ==
== Exemplul 1 ==
;Intrare
;submultimiin.txt
:4
:4
;Iesire
;submultimiout.txt
;Datele introduse corespund restrictiilor impuse
:Datele introduse corespund restrictiilor impuse
:1  
:1  
:1 2  
:1 2  
Line 37: Line 37:


== Exemplul 2 ==
== Exemplul 2 ==
;Intrare
;submultimiin.txt
:19736
:19736
;Iesire
 
;Datele introduse nu corespund restrictiilor impuse
:Datele introduse nu corespund restrictiilor impuse




== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python3" line="1">
<syntaxhighlight lang="python3" line="1">
def generare_submultimi(n, subset, index):
def verifica_restrictii(n):
     if index == n + 1:
     return 1 <= n <= 10
         if len(subset) > 0:
 
             print(" ".join(map(str, subset)))
def genereaza_submultimi(n):
        return
    submultimi = []
 
    def backtrack(start, current):
        submultimi.append(current[:])
 
         for i in range(start, n + 1):
             current.append(i)
            backtrack(i + 1, current)
            current.pop()


     # Includem elementul la index în submulțime
     backtrack(1, [])
    generare_submultimi(n, subset + [index], index + 1)
    return submultimi[1:]  # Excludem mulțimea vidă


    # Nu includem elementul la index în submulțime
# Citire din fișierul de intrare
     generare_submultimi(n, subset, index + 1)
with open('submultimiin.txt', 'r') as file:
     n = int(file.readline())


# Citire date de intrare
# Verificare restricții
with open("submultimi.txt", "r") as file:
if verifica_restrictii(n):
     n = int(file.readline().strip())
     # Generare submulțimi
    rezultat = genereaza_submultimi(n)


# Rezolvare problema
    # Scriere în fișierul de ieșire
generare_submultimi(n, [], 1)
    with open('submultimiout.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:25, 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}.

Date de intrare[edit | edit source]

Fişierul de intrare submultimiin.txt conţine pe prima linie numărul n.

Date de iesire[edit | edit source]

Fişierul de ieşire submultimiout.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

Exemplul 1[edit | edit source]

submultimiin.txt
4
submultimiout.txt
Datele introduse corespund restrictiilor impuse
1
1 2
1 2 3
1 2 3 4
1 2 4
1 3
1 3 4
1 4
2
2 3
2 3 4
2 4
3
3 4
4

Exemplul 2[edit | edit source]

submultimiin.txt
19736
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):
           current.append(i)
           backtrack(i + 1, current)
           current.pop()
   backtrack(1, [])
   return submultimi[1:]  # Excludem mulțimea vidă
  1. Citire din fișierul de intrare

with open('submultimiin.txt', 'r') as file:

   n = int(file.readline())
  1. Verificare restricții

if verifica_restrictii(n):

   # Generare submulțimi
   rezultat = genereaza_submultimi(n)
   # Scriere în fișierul de ieșire
   with open('submultimiout.txt', 'w') as file_out:
       for subset in rezultat:
           file_out.write(" ".join(map(str, subset)) + "\n")

else:

   print("Date de intrare nevalide.")

</syntaxhighlight>