next_permutation( ) 和prev_permutation( ) 全排列函数

头文件#include <algorithm>

两者都是用来计算排列组合的函数。前者是求出下一个排列组合,而后者是求出上一个排列组合。

所谓“下一个”和“上一个”,有一个例子;

对序列 {a, b, c}, a > b >c,它的下一个序列即为{a, c, b},而{a, c, b}的上一个序列即为{a, b, c},同理可以推出所有的六个序列为:{a, b, c}、{a, c, b}、{b, a, c}、{b, c, a}、{c, a, b}、{c, b, a},其中{a, b, c}没有上一个元素,{c, b, a}没有下一个元素

使用

next_permutation( (start,end );

用next_permutation和prev_permutation求排列组合很方便,但是要记得包含头文件#include <algorithm>。

 虽然最后一个排列没有下一个排列,用next_permutation会返回false,但是使用了这个方法后,序列会变成字典序列的第一个,

如cba变成abc。prev_permutation同理

posted @ 2017-07-20 19:07  山杉三  阅读(342)  评论(0编辑  收藏  举报