全排列函式next_permutation在STL的使用

塵封的記憶0發表於2017-03-24

對於next_permutation函式,其函式原型為:

     #include <algorithm>

     bool next_permutation(iterator start,iterator end)

噹噹前序列不存在下一個排列時,函式返回false,否則返回true


我們來看下面這個例子:

[cpp] view plain copy
  1. #include <iostream>  
  2. #include <algorithm>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     int num[3]={1,2,3};  
  7.     do  
  8.     {  
  9.         cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;  
  10.     }while(next_permutation(num,num+3));  
  11.     return 0;  
  12. }  


輸出結果為:


當我們把while(next_permutation(num,num+3))中的3改為2時,輸出就變為了:


由此可以看出,next_permutation(num,num+n)函式是對陣列num中的前n個元素進行全排列,同時並改變num陣列的值。

另外,需要強調的是,next_permutation()在使用前需要對欲排列陣列按升序排序,否則只能找出該序列之後的全排列數。比如,如果陣列num初始化為2,3,1,那麼輸出就變為了:



相關文章