Advertisement
ipilot

Перестановки(рекурсия)

Apr 9th, 2015
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.64 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void get_perm(int cur, int size, int* perm, bool* used)
  6. {
  7.     if (cur == size)
  8.     {
  9.         for(int i = 0; i < size; i++) cout << perm[i] << " ";
  10.         cout << endl;
  11.         return;
  12.     }
  13.  
  14.     for(int i = 0; i < size; i++)
  15.     {
  16.         if (!used[i])
  17.         {
  18.             used[i] = true;
  19.             perm[cur] = i+1;
  20.             get_perm(cur+1, size, perm, used);
  21.             used[i] = false;
  22.         }
  23.     }
  24. }
  25.  
  26. int main()
  27. {
  28.     int *perm, k;
  29.     bool *used;
  30.     cout << "Enter size: ";
  31.     cin >> k;
  32.     perm = new int[k];
  33.     used = new bool[k];
  34.     for(int i = 0; i < k; i++) perm[i] = 0, used[i] = 0;
  35.  
  36.     get_perm(0, k, perm, used);
  37.  
  38.     delete perm;
  39.     delete used;
  40.  
  41.     return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement