fbpx

Problema #197 – Combinari – Rezolvari PBInfo

de Mihai-Alexandru

Cerinţa

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

Date de intrare

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

Date de ieşire

Fişierul de ieşire combinari.out va conţine pe fiecare linie câte k valori, separate prin câte un spaţiu, reprezentând elementele unei submulțimi.

Restricţii şi precizări

  • 1 ≤ k ≤ n ≤ 15
  • elementele fiecărei submulţimi vor fi afişate în ordine crescătoare

Exemplu

combinari.in

4 2

combinari.out

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

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

int n , m , x[20];

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


void back(int k)
{
    for(int i = x[k - 1] + 1 ; i <= n ; i++)///se iau de la anterior + 1
    {
        x[k] = i;
        if(k == m) afisare();///daca s au pus m
        else back(k + 1);
    }
}

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

S-ar putea sa iti placa