# PBinfo #3923 – back_abc2 – Rezolvare C++

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

## Enunț

Cerința
Se citesc două numere naturale n și m. Afișați în ordine lexicografică toate cuvintele care sunt formate din m litere distincte folosind primele n litere mari din alfabet.

Date de intrare
Programul citește de la tastatură numerele n și m, separate prin spații.

Date de ieșire
Programul va afișa pe ecran pe linii separate cuvintele cerute.

Restricții și precizări

0 ≤ n ≤ 26, 0 ≤ m ≤ 5
m ≤ n

Exemplu:
Intrare

4 3
Ieșire

ABC
ABD
ACB
ACD
ADB
ADC
BAC
BAD
BCA
BCD
BDA
BDC
CAB
CAD
CBA
CBD
CDA
CDB
DAB
DAC
DBA
DBC
DCA
DCB
Explicație
Primele 4 litere mari sunt {A,B,C,D} și se formează cuvinte cu 3 litere distincte.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int n,X[11],m,P[27];
char s[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void afisare()
{
    for(int i=1;i<=m;i++)
        cout<<s[X[i]-1];
    cout<<"\n";
}
void back(int k)
{
    for(int i=1;i<=n;i++)
        if(!P[i])
    {
        X[k]=i;
        P[i]=1;
        if(k==m) afisare();
        else back(k+1);
        P[i]=0;
    }
}
int main()
{
    cin>>n>>m;
    back(1);
    return 0;
}
```

## Resurse

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