353
Cerinţa
Se dau n mulțimi:
- A1={1,2,…,v1}
- A2={1,2,…,v2}
- ..
- An={1,2,…,vn}
Să se genereze în ordine lexicografică elementele produsului cartezian A1×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 ≤ 71 ≤ 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