fbpx

Problema #3158 – numere123 – Rezolvari PBInfo

de Mihai-Alexandru

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
#include <bits/stdc++.h>

using namespace std;

int n , m , a[30] , x[30] , p[30] , cnt;

int afisare()
{
    for(int i = 1 ; i <= cnt ; i++)
        cout << a[x[i]];
    cout << '\n';
}

void back(int k)
{
    for(int i = 1 ; i <= cnt ; i++)
    if(!p[i])
    {
        x[k] = i;
        p[i] = 1;
        if(k == 1 && a[i] == 0);
        else
        {
            if(k == cnt) afisare();
            else back(k + 1);
        }
        p[i] = 0;
    }
}

int main()
{
    cin >> n;
    while(n != 0)
    {
        a[++cnt] = n % 10;
        n /= 10;
    }
    sort(a + 1 , a + cnt + 1);
    back(1);
}
Comentarii

S-ar putea sa iti placa