南邮 OJ 1429 全排列的输出

全排列的输出

时间限制(普通/Java) :  1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 111            测试通过 : 34 

比赛描述

全排列就是n个不同元素排成一列,我们不妨可以简单地将n个元素理解为自然数1,2,…,n。现假设不同的全排列按照字典序自动从小到大排,123…n的序号为零。编程读入n、m,输出序号为m(m<=n!-1)的全排列。例如n=5,m=2,则输出为:

1 2 4 3 5



输入

一行两个自然数n、m(1<n<20,0<=m<=n!-1)。

输出

序号为m的全排列,每个元素后有一个空格。

样例输入

3 5

样例输出

3 2 1 

提示

 

题目来源

JSOI2010



#include<iostream>
#include<algorithm>
using namespace std;

int main(){
	int n,m,a[20],i;
	for(i=0;i<20;i++){
		a[i] = i+1;
	}
	scanf("%d%d",&n,&m);
	while(next_permutation(a,a+n) && --m);
	for(i=0; i<n; i++){
		printf("%d ",a[i]);
	}
	printf("\n");
}





你可能感兴趣的:(ACM,南邮OJ,全排列的输出)