Rezolvare completă PbInfo #1278 ProdusCartezian2

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 Adresa de email.

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!