题目信息:给出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<
}
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
}
for(int i=1;i
cout<
}
return 0;
}
?