# PBinfo #1277 – produscartezian1 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerinţa
Se dau două numere naturale nenule n și m. Considerăm mulțimea A={1,2,..,n}. Să se genereze în ordine lexicografică elementele produsului cartezian \( A^m=A \times A \times \cdots \times A \).

Date de intrare
Fișierul de intrare produscartezian1.in conține pe prima linie numerele n și m, separate printr-un spațiu.

Date de ieşire
Fișierul de ieșire produscartezian1.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 ≤ m ≤ 6

Exemplu:
produscartezian1.in

2 3
produscartezian1.out

1 1 1 
1 1 2 
1 2 1 
1 2 2 
2 1 1 
2 1 2 
2 2 1 
2 2 2

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
int n, m, v[10];
ifstream in("produscartezian1.in");
ofstream out("produscartezian1.out");
void afisare(int k) {
    for (int i = 1; i <= k; ++i)
        out << v[i] << " ";
    out << "\n";
}
void backtracking(int k) {
    for (int i = 1; i <= n; ++i) {
        v[k] = i;
        if (k == m) afisare(k);
        else backtracking(k + 1);
    }
}
int main() {
    in >> n >> m;
    backtracking(1);
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1277)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1277/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1277/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
