#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,a[15],c;
bool used[15];
void dfs(int dep){
if(dep>n)cnt++;
if(cnt==m){
for(int i=1;i<=n;i++)cout<<a[i];
exit(0);
}
for(int i=1;i<=n;i++){
if(used[i]==0){
a[dep]=i;used[i]=1;
dfs(dep+1);
used[i]=0;
}
}
}
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>m;
dfs(0);
}
1. 小埋排列序列
题目描述
给出集合 [1,2,3,…,n] ,其所有元素共有 n!种排列。
按招大小顺序列出所有排列情况,并一一标记,当 n = 3时,所有排列如下:
1.“123”
2.“132”
3.“213”
4.“231“
5.“312”
6.“321”
给定 n 和 k,返回第 k 个排列。
输入格式
第一行输入两个整数 n 和 k。
输出格式
输出第 kk 个序列。
样例
Input 1
3 3
Output 1
213
Input 2
4 9
Output 2
2314
数据范围
1<= n <= 9 1<=n<=9
1<= k <= n! 1<=k<=n!