⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.cpp

📁 有重复元素参加的重排列
💻 CPP
字号:
#include <cstdlib>
#include <iostream>
#include <iterator>
#include <algorithm>

using namespace std;

template<typename BidirectionalIterator>

bool    Next_permutation(  BidirectionalIterator first,
                           BidirectionalIterator last  ){
      if ( first == last)
         return false;
      BidirectionalIterator i = first;
      ++i;
      if (i == last)
              return false;
      i = last;
      --i;
      while( 1 ){
              BidirectionalIterator ii = i;
              --i;
              if (*i < *ii){
                 BidirectionalIterator j = last;
                 while (!(*i < *--j));
                 std::iter_swap(i, j);
                 std::reverse(ii, last);
                 return true;
              }
              if (i == first){
                 std::reverse(first, last);
                 return false;
              }
    }
}
   
int main(int argc, char *argv[])
{
    char s[]="aac";
    sort( s, s+sizeof(s)/sizeof(s[0])-1 );
    do{
         copy( s, s+sizeof(s)/sizeof(s[0])-1, ostream_iterator<char>(cout," ") );
         cout<<endl;
    }while( Next_permutation( s, s+sizeof(s)/sizeof(s[0])-1 ) );
    system("PAUSE");
    return EXIT_SUCCESS;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -