作者:孙宇洪
题目:http://poj.org/problem?id=1731
题意:给你一个字符串,先让你输出排序后的字符串,然后再依次输出排序后的字符串的全排列。
分析:如果这道题是用C写的话,我们就要写一个递归函数,不过还好这道题的数据量不大(我试过,给你的字符串的长度不超过9),如果字符串的长度大于20的话,那么写递归函数就显然会失败。现在让我来介绍一下这个函数的应用:
先看一下这个函数的参数:
next_permutation(first,last,comp);//first为首迭代器,last为末迭代器,comp为比较函数
它的功能是:求出一个容器的下一排列,如果没有下一排列,则返回0。
有很多人可能不知道next_permutation函数中有comp比较函数,这个我会在下一篇博文中讲述。
prev_permutation(first,last,comp);//first为首迭代器,last为末迭代器,comp为比较函数
它的参数和next_permutation完全相同,它的功能是:求出一个容器的上一排列,如果没有上一排列,则返回0
现在贴一下我的代码:
关于这两个函数的应用,还有例题:poj1256 poj 1833 poj1731(本文) poj3187 poj1270(图论+next_permutation的应用)