next_permutation包含于头文件algorithm中,是经常使用的笔者经常使用的一个函数,在算法竞赛题目中颇为好用,特别是一些猜数字问题,这个函数完全避免了多层循环的问题,使得很多问题不需要自己动脑子一样简单,笔者因此对其实现原理非常感兴趣,查阅相关资料后终于恍然大悟,简单起见,只对整型数组做了测试,详细部分看如下代码,已经写得非常清楚,希望对读者有所帮助。
#include<iostream>
#include<algorithm>//包含reverse
using namespace std;
bool next_permutation( int* first, int* last )
{
if(first == last)
return