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 ≤ 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); }