链 接:点击打开链接
题 意:给你两个数n,m,求1 到 m全排列第m小的排列
思 路:全排列的大小是根据它的逆序数的大小
例如 n=5 1 2 3 4 5 逆序数为0 最小
1 2 3 5 4 逆序数为1
............................................
利用STL中的全排列函数next_permutation(a,a+n)
代 码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
while(cin>>n>>m)
{
int a[10005],i,sum=0;
for(i=0;i<n;i++)
a[i]=i+1;
do
{
sum++;
if(sum==m)
break;
}while(next_permutation(a,a+n));
for(i=0;i<n-1;i++)
cout<<a[i]<<" ";
cout<<a[n-1]<<endl;
}
}