STL函數next_permutation簡介

基本介紹:next_permutation是C++的STL庫中的一個函數,這個函數能夠求解一個數組中基於現有排列的下一個排列,而調用該函數以後生成的排列是上一個排列 基於字典序產生的下一個排列。(若是以爲拗口能夠看下面程序的運行結果,一看就懂)算法

使用方法:next_permutation擁有兩個參數,分別是指向數組開頭的指針和指向數組結尾的指針。數組

返回值:若是能夠生成下一個排列,即下一個排列存在時返回真,不然返回假。函數

 1 #include <cstdio>
 2 #include <algorithm>//包含next_permutation()的頭文件
 3 
 4 using namespace std;  5 
 6 int main()  7 {  8     int n,p[10];  9     scanf("%d", &n); 10     for(int i = 0; i < n; i++) scanf("%d", &p[i]); 11     sort(p, p+n); 12     do{ 13         for(int i = 0; i < n; i++) printf("%d", p[i]); 14         printf("\n"); 15     }while(next_permutation(p, p+n)); 16     return 0; 17 } 

這裏只演示了整數數組的排列,事實上字符數組也能夠進行排列。spa

下面是程序運行結果:指針

4
1 2 3 4
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321

【參考書目】《算法競賽入門經典》code

相關文章
相關標籤/搜索