Cerința
Fie n un număr natural nenul și mulțimea A={1,2,3,...,n}. Să se determine toate partițiile disjuncte ale mulțimii A.
O partiție a mulțimii A este formată din m (1 ≤ m ≤ n) submulțimi disjuncte ale lui A: A1, A2, …, Am cu proprietatea că A=A1U A2 U...U Am.
Date de intrare
Fișierul de intrare partitiimultime.in conține pe prima linie numărul n.
Date de ieșire
Fișierul de ieșire partitiimultime.out va conține câte o linie pentru fiecare partiție determinată. Submulțimile vor fi separate în fiecare linie cu ajutorul caracterului *, iar elementele fiecărei submulțimi se vor scrie fără spațiere, ca în exemplul de mai jos.
Restricții și precizări
1 ≤ n ≤ 9- Partițiile determinate se vor afișa în ordine lexicografică
Exemplu
partitiimultime.in
3
partitiimultime.out
123* 12*3* 13*2* 1*23* 1*2*3*
Explicație
Sunt determinate 5 partiții distincte ale mulțimii A.
{1,2,3}{1,2} U {3}{1,3} U {2}{1} U {2,3}{1} U {2} U {3}
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema PartitiiMultime:
//partitiile unei multimi
#include <fstream>
using namespace std;
int x[10], n;
ofstream g("partitiimultime.out");
ifstream f("partitiimultime.in");
int maxim(int k)
{int i,z=0;
for(i=1;i<k;i++)
z=max(x[i],z);
return z;
}
void scrie()
{ int i,z,j;
z=maxim(n+1);
for(i=1;i<=z;i++)
{ for(j=1;j<=n;j++)
if(x[j]==i)g<<j;
g<<"*";
}
g<<endl;}
void back(int k)
{ if(k==n+1)scrie();
else
for(int i=1; i<=maxim(k)+1;i++)
{ x[k]=i;
back(k+1);}
}
int main()
{ f>>n;
x[1]=1;
back(2);
return 0;}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa
.
Rezolvarea problemei #1330 PartitiiMultime
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1330 PartitiiMultime de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!