一句话理解
next_permutation 生成下一个字典序排列。
为什么要学
n 很小的时候枚举全排列。
讲解
do { 使用 } while (next_permutation(a, a+n)); 之前数组应先排成最小序。
n! 增长极快,n=10 已经 三百多万,n=12 就很大。
例子
int a[3] = {1, 2, 3};
int cnt = 0;
do { cnt++; } while (next_permutation(a, a + 3));
cout << cnt;
输出:
6
3! = 6 个排列。
常见错误
- 没先排序,枚举会漏掉前面的排列。
- n 太大。