Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.28 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <iostream>
  3. #include <fstream>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9.  
  10.  
  11. template <class smth>
  12. bool my_next_permutation(smth first, smth last)
  13. {
  14.     smth end = last;
  15.     end--;
  16.     cout << "проверка концов" << *first << ' ' << *end << "\n";
  17.     if (first == end)  return 0;
  18.     smth runner = end;
  19.     cout << *runner << "присвоил бегунок" <<"\n";
  20.     if (first == --runner)  return 0;
  21.  
  22.     smth right, left;
  23.  
  24.     left = end;
  25.     cout << *left <<"присвоил левый" << "\n";
  26.     //runner--;
  27.  
  28.     cout << *runner << "проверка бегунка перед поиском опорной точки" <<'\n';
  29.     while ((*runner >= * left)) //&& (runner > first))
  30.     {
  31.         cout << *runner <<"бегунок внутри"<< '\n';
  32.         cout << *left << "левый внутри" << '\n';
  33.         cout << *first << "первый внутри" << "\n";
  34.         if (runner == first)
  35.         {
  36.             cout << *first /*<< *last */<< "runner == first" << '\n';
  37.             reverse(first, last);
  38.             return 0;
  39.         }
  40.  
  41.         runner--;
  42.         left--;
  43.     }
  44.     cout << *runner << "проверка бегунка ПОСЛЕ поиска опорной точки" << '\n';
  45.    
  46.     cout << *left << "левый ПОСЛЕ поиска" << "\n";
  47.     right = end;
  48.     cout << *right << "проверка создания" << '\n';
  49.     while ((*right <= *runner) && (right > left))
  50.     {
  51.         right--;
  52.         cout << *right << "проверка создания внутри" << '\n';    
  53.     }
  54.     cout << *right << "проверк после создания" << "\n";
  55.     cout << *runner << "проверка ПОСЛЕ бегунка" << "\n";
  56.     iter_swap(runner, right);
  57.     sort(left, last);
  58.     return 1;
  59. }
  60.  
  61. int main()
  62. {
  63.     setlocale(LC_ALL, "Russian");
  64.     ofstream out("track_list.txt");
  65.     vector <int> vec{1,1,2,2};
  66.  
  67.     do
  68.     {
  69.         for (int i = 0; i < vec.size(); i++)
  70.         {
  71.             cout << vec[i];
  72.             out << vec[i];
  73.         }
  74.         cout << '\n';
  75.         out << '\n';
  76.     } while (my_next_permutation(vec.begin(), vec.end()));
  77.     //while (next_permutation(vec.begin(), vec.end()));
  78.     out << "-------------------------" << '\n';
  79.     do
  80.     {
  81.         for (int i = 0; i < vec.size(); i++)
  82.         {
  83.             //cout << vec[i];
  84.             out << vec[i];
  85.         }
  86.         //cout << '\n';
  87.         out << '\n';
  88.     } while (next_permutation(vec.begin(), vec.end()));
  89.  
  90.  
  91.  
  92.     out.close();
  93.     return 0;
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement