261
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