mickypinata

LEET-T0046: Permutations

Dec 1st, 2021
593
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int> arr;
  5.  
  6. void recur(vector<vector<int>> &ans, vector<int> &arr, int n, int i){
  7.     if(i == n){
  8.         ans.push_back(arr);
  9.         return;
  10.     }
  11.     for(int j = i; j < n; ++j){
  12.         swap(arr[i], arr[j]);
  13.         recur(ans, arr, n, i + 1);
  14.         swap(arr[i], arr[j]);
  15.     }
  16. }
  17.  
  18. vector<vector<int>> permute(vector<int> &arr){
  19.     vector<vector<int>> ans;
  20.     recur(ans, arr, arr.size(), 0);
  21.     return ans;
  22. }
  23.  
  24. int main(){
  25.  
  26.     int n;
  27.     scanf("%d", &n);
  28.     for(int i = 0; i < n; ++i){
  29.         int x;
  30.         scanf("%d", &x);
  31.         arr.push_back(x);
  32.     }
  33.     for(vector<int> &v : permute(arr)){
  34.         cout << "[ ";
  35.         for(int x : v){
  36.             cout << x << ' ';
  37.         }
  38.         cout << "]\n";
  39.     }
  40.  
  41.     return 0;
  42. }
  43.  
RAW Paste Data