全排列函式next_permutation在STL的使用
阿新 • • 發佈:2019-01-07
對於next_permutation函式,其函式原型為:
#include <algorithm>
bool next_permutation(iterator start,iterator end)
噹噹前序列不存在下一個排列時,函式返回false,否則返回true
我們來看下面這個例子:
- #include <iostream>
- #include <algorithm>
- usingnamespace std;
- int main()
- {
- int num[3]={1,2,3};
- do
-
{
- cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;
- }while(next_permutation(num,num+3));
- return 0;
- }
輸出結果為:
當我們把while(next_permutation(num,num+3))中的3改為2時,輸出就變為了:
由此可以看出,next_permutation(num,num+n)函式是對陣列num中的前n個元素進行全排列,同時並改變num陣列的值。
另外,需要強調的是,next_permutation()在使用前需要對欲排列陣列按升序排序,否則只能找出該序列之後的全排列數。比如,如果陣列num初始化為2,3,1,那麼輸出就變為了: