Cerinţa
Se dau n
mulțimi:
- \( A_1 = \left\{1,2,…,v_1 \right\} \)
- \( A_2 = \left\{1,2,…,v_2 \right\} \)
- ..
- \( A_n = \left\{1,2,…,v_n \right\} \)
Să se genereze în ordine lexicografică elementele produsului cartezian \( A_1 \times A_2 \times \cdots \times A_n \).
Date de intrare
Fișierul de intrare produscartezian2.in
conține pe prima linie numărul n
, iar pe a doua linie n
numere naturale nenule v[1] v[2] ... v[n]
.
Date de ieşire
Fișierul de ieșire produscartezian2.out
va conține elementele produsului cartezian, fiecare pe o linie. Valorile de pe fiecare linie vor fi separate prin câte un spațiu.
Restricţii şi precizări
1 ≤ n ≤ 7
1 ≤ v[i] ≤ 7
Exemplu
produscartezian2.in
3 2 1 3
produscartezian2.out
1 1 1 1 1 2 1 1 3 2 1 1 2 1 2 2 1 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 ProdusCartezian2:
#include <iostream>
#include <fstream>
int n, v[10], x[10];
std :: ifstream fin("produscartezian2.in");
std :: ofstream fout("produscartezian2.out");
void afis(int k){
for(int i=1 ; i <= k ; ++i)
fout << x[i] << " ";
fout << std :: endl;
}
void back(int k){
for(int i = 1; i <= v[k] ; ++i)
{
x[k]=i;
if(k == n)
afis(k);
else
back(k+1);
}
}
int main(){
fin >> n;
for(int i = 1 ; i <= n ; i ++)
fin >> v[i];
back(1);
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 #1278 ProdusCartezian2
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1278 ProdusCartezian2 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!