# PBinfo #4008 – back_11 – Rezolvare C++

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

## Enunț

Cerința
Se citește un număr natural n. Afișați în ordine crescătoare toate numerele care sunt formate din n cifre distincte și care au mai multe cifre pare decât cifre impare.

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

Date de ieșire
Programul va afișa pe ecran pe linii separate numerele cerute. Numerele se vor afișa în ordine strict crescătoare

Restricții și precizări

1 ≤ n ≤ 8.

Exemplu:
Intrare

3
Ieșire

102
104
106
108
120
124
126
128
140
142
146
148
160
162
164
168
180
182
184
186
201
203
204
205
206
207
...
894
896
902
904
906
908
920
924
926
928
940
942
946
948
960
962
964
968
980
982
984
986
Explicație
Pentru n=3 se obțin 308 numere.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int n,X[11],P[10];
int ok(int k)
{
    if(X[1]==0) return 0;
    int cp=0;
    for(int i=1;i<=k;i++)
        if(X[i]%2==0) cp++;
    if(k==n && cp<=k-cp) return 0;
    return 1;
}
void afisare()
{
    for(int i=1;i<=n;i++)
        cout<<X[i];
    cout<<"\n";
}
void back(int k)
{
    for(int i=0;i<=9;i++)
        if(!P[i])
        {
            X[k]=i;
            P[i]=1;
            if(ok(k))
                if(k==n) afisare();
                else back(k+1);
            P[i]=0;
        }
}
int main()
{
    cin>>n;
    back(1);
    return 0;
}
```

## Resurse

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