原题链接:https://vjudge.net/problem/18472/origin
思路:stl中的next_permutation(num,num+n)可以将数组的初始位置(也就是这里的第一个位置)到你选定的末位(也就是这里的第n个位置)全排列的下一个(按字典序)。
#include<iostream>
#include<cstring>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
int num[1005];
while(cin>>n>>m)
{
memset(num,0,sizeof(num));
for(int i=1;i<=n;i++)
{
num[i]=i;
}
m--;
while(m--)
{
next_permutation(num+1,num+n+1);
}
for(int i=1;i<=n;i++)
{
if(i==1) cout<<num[i];
else cout<<" "<<num[i];
}
cout<<endl;
}
return 0;
}