跳到正文
信奥逐课

第 143 课

next_permutation

🔵 基础 约 7 分钟

一句话理解

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=12 时枚举全排列在 1 秒时限里通常很危险。

在线练习 C++ 在浏览器里编译,代码不会上传

Ctrl / ⌘ + Enter 运行 · Tab 缩进

输出
 

进度保存在本机浏览器里。

左右方向键也可翻课