hdu1027(n个数的按字典序排列的第m个序列)

2015-01-27 14:13:00 · 作者: · 浏览: 32

题目信息:给出n,m,求n个数的按字典序排列的第m个序列

?

AC代码:

/**
*全排列的个数(次序)
*/
#include
#include
#include
int a[1001],x;
using namespace std;
void print(int n){
for(int i=1;i cout< }
cout< }
void range(int k,int n,int m){//自己定义的全排列函数(超时?)
if(k==n) {
++x;
if(x==m){//控制全排列次数
print(n);
return;
}
}
for(int i=k;i<=n;i++){
swap(a[k],a[i]);
range(k+1,n,m);
swap(a[k],a[i]);
}
}
int main()
{
int n,m;
while(scanf(%d%d,&n,&m)!=EOF){
for(int i=1;i<=n;i++) a[i]=i;
x=0;
//range(1,n,m);
for(int i=1;i next_permutation(a+1,a+n+1);//全排列库函数,从1开始,相当于迭代器
}
for(int i=1;i cout< }
cout< }
return 0;
}


?