fbpx

Problema #196 – Aranjamente – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

Se citesc două numere naturale nenule n și k. Să se afişeze, în ordine lexicografică, aranjamentele de câte k elemente ale mulţimii {1,2,..,n}.

Date de intrare

Fişierul de intrare aranjamente.in conţine pe prima linie numerele n și k, separate printr-un spatiu.

Date de ieşire

Fişierul de ieşire aranjamente.out va conţine pe fiecare linie câte k valori, separate prin câte un spaţiu, reprezentând elementele unei aranjări.

Restricţii şi precizări

  • 0 < k < n < 9

Exemplu

aranjamente.in

4 2

aranjamente.out

1 2 
1 3 
1 4 
2 1 
2 3 
2 4 
3 1 
3 2 
3 4 
4 1 
4 2 
4 3 
#include <bits/stdc++.h>
using namespace std;

ifstream cin("aranjamente.in");
ofstream cout("aranjamente.out");

int n , m , x[10], p[10];

void afis()
{
    for(int i = 1 ; i <= m ; ++i)
        cout << x[i] << " ";
    cout << endl;
}

void back(int k)
{
    for(int i = 1 ; i <= n ; ++i)
        if(!p[i])
        {
            p[i] = 1;
            x[k] = i;
            if(k == m) afis();
            else back(k+1);
            p[i] = 0;
        }
}

int main()
{
    cin >> n >> m;
    back(1);
    return 0;
}
Comentarii

S-ar putea sa iti placa