MeShootIn

Combinations

Jun 14th, 2019
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int tmp[100] = {-1};
  6. int arr[100];
  7.  
  8. // Генарация сочетаний: берём p-ый по счёту элемент, находящийся на позиции pos
  9. void Combinations(int n, int k, int p, int pos){
  10.     if(k > n){
  11.         return;
  12.     }
  13.    
  14.     // Условие выхода + вывод сочетания
  15.     if(p == k + 1){
  16.         for(int i = 0; i < k; ++i){
  17.             cout << tmp[i] << " ";
  18.         }
  19.         cout << "\n";
  20.        
  21.         return;
  22.     }
  23.    
  24.     for(int i = pos; i <= n - k + p - 1; i++){
  25.         // Берём p-ый элемент
  26.         tmp[p - 1] = arr[i];
  27.         // Начинаем выбирать p + 1 - ый элемент, начиная с позиции i + 1
  28.         Combinations(n, k, p + 1, i + 1);
  29.     }
  30. }
  31.  
  32. int main(){
  33.     int n, k;
  34.     cin >> n >> k;
  35.    
  36.     for(int i = 0; i < n; ++i){
  37.         cin >> arr[i];
  38.     }
  39.    
  40.     Combinations(n, k, 1, 0);
  41.    
  42.     return 0;
  43. }
Add Comment
Please, Sign In to add comment