题意是给m组数据,每组数据包括n,k两个整数,然后还有n个将要排列的整数,求第k个排列的数列就可以了。这道题如果使用C++类库的函数来解决的话,就非常简单,在这里就偷一下懒。就直接使用<algorithm>中的next_permutation了。另外,不知道为什么,如果我使用cin,cout格式输入输出的话,就会超时了,很郁闷cin,cout的时间效率真的这样慢啊。
#include <iostream>
#include <algorithm>
using namespace std;
#define N 2000
int main()
{
int m,n,k,num[N],c;
scanf("%d",&m);
while(m--)
{
c=0;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;++i)
scanf("%d",&num[i]);
for(int i=1;i<=k;++i)
next_permutation (num+1,num+n+1);
for(int i=1;i<=n;++i)
printf("%d ",num[i]);
cout<<endl;
}
//system("pause");
return 0;
}