Advertisement
Alaricy

пермутация1

Dec 21st, 2022
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <numeric>
  4. #include <sstream>
  5. #include <vector>
  6.  
  7. using namespace std;
  8. template <typename It>
  9. vector<string> GetPermutations(It range_begin, It range_end) {
  10.     vector<string> result;
  11.     string s="";
  12.     for(auto it = range_begin; it!=range_end; ++it)
  13.     {    
  14.     s+=to_string(*it);
  15.     }
  16.     sort(s.begin(), s.end(), greater<char>());
  17.     do {
  18.         string ss="";
  19.         string prob="";
  20.         for (char c : s){
  21.         ss=ss+prob+c;
  22.         prob=" ";
  23.         }
  24.         result.push_back(ss);
  25.     } while (prev_permutation(s.begin(), s.end()));
  26. return result;
  27.  
  28. }
  29.  
  30. // функция, записывающая элементы диапазона в строку
  31. template <typename It>
  32. string PrintRangeToString(It range_begin, It range_end) {
  33.     ostringstream out;
  34.     for (auto it = range_begin; it != range_end; ++it) {
  35.         out << *it << " "s;
  36.     }
  37.     out << endl;
  38.     // получаем доступ к строке с помощью метода str для ostringstream
  39.     return out.str();
  40. }
  41. int main() {
  42.     vector<int> permutation(3);
  43.     iota(permutation.begin(), permutation.end(), 1);
  44.     auto result = GetPermutations(permutation.begin(), permutation.end());
  45.     for (const auto& s : result) {
  46.         cout << s << endl;
  47.     }
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement