使用next_permutation函式生成全排列
阿新 • • 發佈:2019-01-01
#include <iostream> #include <algorithm> #include <string> using namespace std; int main() { string str; cin >> str; sort(str.begin(), str.end()); cout << str << endl; while (next_permutation(str.begin(), str.end())) { cout << str << endl; } return 0; }
2., 參考 http://blog.csdn.net/yijiantao/article/details/16368715
template<class 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; for(;;) { BidirectionalIterator ii = i; --i; if(*i < *ii) { BidirectionalIterator j = lase; while(!(*i < *--j)); iter_swap(i, j); reverse(ii, last); return true; } if(i == first) { reverse(first, last); //全逆向,即為最小字典序列,如cba變為abc return false; } } }