Advertisement
Fastrail08

Friends Pairing

May 2nd, 2025 (edited)
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int> getVector(vector<int> &v, int level, int number){
  5.     vector<int> newVector;
  6.     //start from index 1 as level is to be ignored and it is present on index 0
  7.     // for(int i = 1; i < v.size(); i++){
  8.     //     if(v[i] != number){
  9.     //         newVector.push_back(v[i]);
  10.     //     }
  11.     // }
  12.     //full array considered, ignore level to avoid self pairing
  13.     for(int i : v){
  14.         if(i != number && i != level){
  15.             newVector.push_back(i);
  16.         }
  17.     }
  18.     return newVector;
  19. }
  20.  
  21. void getFriendPairs(vector<int> v, string ans, int &count){
  22.    
  23.     //base case
  24.     if(v.size() == 0){
  25.         count++;
  26.         cout << count << '.' << ans << '\n';
  27.         return;
  28.     }
  29.    
  30.     //go single
  31.     vector<int> single = getVector(v, v[0], v[0]);
  32.     getFriendPairs(single, ans + '(' + to_string(v[0] + 1) + ')', count);
  33.    
  34.     //go in pair (every current individual will form pairs with all the people ahead of him only, to avoid duplicacy: (1, 2); (2, 1))
  35.     for(int i = 1; i < v.size(); i++){
  36.         vector<int> pairs = getVector(v, v[0], v[i]);
  37.         getFriendPairs(pairs, ans + '(' + to_string(v[0] + 1) + ',' + to_string(v[i] + 1) + ')', count);
  38.     }
  39.    
  40. }
  41.  
  42. int main() {
  43.     // your code goes here
  44.     int n;
  45.     cin >> n;
  46.     int count = 0;
  47.     vector<int> v(n);
  48.     for(int i = 0; i < n; i++){
  49.         v[i] = i;
  50.     }
  51.     getFriendPairs(v, "", count);
  52. }
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement