林品逸
(hyacinth_lpy)
1
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 个赞
林子熙1
(good)
8
我认为应该这样
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 个赞
陈晟亦
(弈剑のㄨ听雨阁)
10
关键代码
for(int i=1; i<=n; i++){
if(vis[i]<1){
vis[i]=1;
a[x]=i;
dfs(x+1);
vis[i]=0;
}
}
4 个赞