第k个排列...

6. 第k个排列

XJOI - 题目ID:7978必做题100分

最新提交:0 分

历史最高:0 分

时间限制: 200ms

空间限制: 32000kB

题目描述

时间:0.2 空间:32M

题目描述:

我们将所有的全排列按照如下规则进行排序:

如果长度不同,那么长度小的排前面;否则,字典序小的排前面。

请找到按照这个规则排序得到的第 n 个排列。

输入格式:

一个正整数表示 n

输出格式:

一个序列表示答案。

样例输入1:

6

样例输出1:

2 1 3

约定:

1<=n<=400000

3 个赞

私信

5 个赞

图片

5 个赞

?6

5 个赞

为啥不能公开发,也方便其他人看啊

5 个赞

某人很清楚吧?

5 个赞

hh

5 个赞

我认为应该这样
dfs(int pos,int x){
if(pos+1==n){
ans++;
if(ans==n)记录
}
}
for(int i=1;i<=10;i++)if(ans<n)dfs(1,u);

5 个赞

求格式化

4 个赞

关键代码

	for(int i=1; i<=n; i++){
		if(vis[i]<1){
			vis[i]=1;
			a[x]=i;
			dfs(x+1);
			vis[i]=0;
		}
	}
4 个赞

@林品逸 求解决方案

4 个赞