next_permutation函数
next_permutation函数是求全排列的下一位,返回值为bool类型,判断是否有下一位并交换,相对的prev_permutation()函数是全排列的上一位。
例题:https://ac.nowcoder.com/acm/contest/1086/L(火星人)
#include <cstdio>
#include <algorithm>
using namespace std ;
const int N = 10005 ;
int a[N] ;
int main(){
int n , m ;
scanf ("%d%d",&n,&m) ;
for (int i = 0 ; i < n ; ++i)
scanf ("%d",&a[i]) ;
while(m --){
//next_permutation(a,a+n) ;
//next_permutation函数的实现
int k = n - 1;
while (a[k - 1] > a[k]) k -- ;
k -- ;
int t = k;
while (t + 1 < n && a[t + 1] > a[k]) t ++ ;
swap(a[t], a[k]);
reverse(a + k + 1, a + n);
}
for (int i = 0 ; i < n ; ++i)
printf ("%d ",a[i]) ;
printf ("\n") ;
return 0 ;
}