fbpx

Problema #1278 – ProdusCartezian2 – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se dau n mulțimi:

  • A1={1,2,,v1}A1={1,2,,v1}
  • A2={1,2,,v2}A2={1,2,,v2}
  • ..
  • An={1,2,,vn}An={1,2,,vn}

Să se genereze în ordine lexicografică elementele produsului cartezian A1×A2××AnA1×A2××An.

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 
#include <bits/stdc++.h>
using namespace std;

ifstream cin("produscartezian2.in");
ofstream cout("produscartezian2.out");

int n , m , x[10] , a[11];

void afisare()
{
    for(int i = 1 ; i <= n ; i++)
        cout << x[i] << ' ';
    cout << '\n';
}

void back(int k)
{
    if(k > n)
    {
        afisare();
        return;
    }
    else
    {
        for(int i = 1 ; i <= a[k] ; i++)
        {
            x[k] = i;
            back(k + 1);
        }
    }
}

int main()
{
    cin >> n;
    for(int i = 1 ; i <= n ; i++)
        cin >> a[i];
    back(1);
}
Comentarii

S-ar putea sa iti placa