主角
C++中的全排列函数很是强大,生成一个长度为$n$的序列的全排列复杂度仅为$O(n)$。
今天总结一下用法。
默认$cmp$规则
对一个数据有序容器$s$,如下代码便可实现全排列。
为什么必须是有序呢?如果不是有序,$next_permutation$函数便只能生成有序条件下该序列之后的排列。
1 | do{ |
自定义$cmp$规则
那么,如果容器内数据的排序规则和正常的排序规则不太一样呢?
不要慌,我们可以自定义排序规则,手写$cmp$。
举个栗子。
1 | int cmp(char a,char b) |
那么在使用$next_permutation$函数的时候,如下方式实现。
1 | do |