需要注意的是 next_permutationg 是一个变序算法 , 每次调用都会改变数组的值
正因为变序的特性 , 用 do while 循环体 实现比较合适
代码
#include<bits/stdc++.h>usingnamespace std ;#define rg register typedeflonglong ll ;int a[1000+10];int n , m ;int main (){// freopen( "F:\\in\\next_permutation.txt" , "r" , stdin ) ; while( cin >> n >> m ){memset( a ,0,sizeof( a));for( rg int i =0; i < n ;++i )// 下面调用时候全排列函数 数组是从角标 0 开始的
a[i]= i+1;
rg int tim =1;do{if( tim == m )break;
tim++;}while(next_permutation( a , a+n ));for( rg int i =0; i < n ;++i ){if( i==0) cout << a[i];else cout <<" "<< a[i];}
cout << endl ;}return0;}