STL中有一个next_permutation( a, a + n)函数,意思是判断a数组中是否有下一个全排列,返回的是bool类型。
Note:
如果要求的是按字典顺序的全排列需要先对数组a排序,然后在全排列。 (即sort(a, a + n)) 。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int a[10];
int n;
int cnt = 0;
int main() {
cin >> n;// n < 10;
for (int i = 0; i < n; i++) {
a[i] = i + 1;
}
sort(a, a + n);
do {
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
cnt++;
} while (next_permutation(a, a + n));
cout << "cnt = " << cnt << endl;
return 0;
}
运行结果如下: 我输入的是4。一共有n的阶乘种。