# PBinfo #3158 – numere123 – Rezolvare C++

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

## Enunț

Cerința
Se citește un număr natural n având cifrele diferite două câte două. Afișați în ordine crescătoare numerele care se pot obține din cifrele lui n și care au același număr de cifre ca n.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran numerele cerute, câte unul pe fiecare rând.

Restricții și precizări

1 ≤ n ≤ 1.000.000.000
n are toate cifrele distincte

Exemplu:
Intrare

483
Ieșire

348
384
438
483
834
843

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int X[11],n,P[11],A[11];
void afisare()
{
    for(int i=1;i<=n;i++)
        cout<<A[X[i]];
    cout<<"\n";
}
void back(int k)
{
    for(int i=1;i<=n;i++)
    if(!P[i])
    {
        X[k]=i;
        P[i]=1;
        if(A[X[1]]>0)
        {
            if(k==n) afisare();
            else back(k+1);
        }
        P[i]=0;
    }
}
int main()
{
    cin>>n;
    int nc=0;
    while(n>0)
    {
        A[++nc]=n%10;
        n=n/10;
    }
    n=nc;
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            if(A[i]>A[j])
                swap(A[i],A[j]);
    back(1);
    return 0;
}
```

## Resurse

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