1、问题描述
问题描述
0、1、2三个数字的全排列有六种,按照字母序排列如下:
012、021、102、120、201、210
输入一个数n
求0~9十个数的全排列中的第n个(第1个为0123456789)。输入格式
一行,包含一个整数n
输出格式
一行,包含一组10个数字的全排列
样例输入
1
样例输出
0123456789
2、代码实现
import java.util.Scanner;
public class 排列数 {
static int n;
static int[] arr;
static boolean[] visit= new boolean[10];
static int ans = 0;
static boolean finish = false;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
n = scanner.nextInt();
arr = new int[10];
dfs(0);
}
public static void dfs(int k) {
if(finish ) return;
if(k == 10) {
ans++;
if(ans == n) {
for(int i : arr) {
System.out.print(i);
}
finish = true;
return;
}
}
for(int i = 0;i < 10;i++) {
if(!visit[i]) {
arr[k] = i;
visit[i] = true;
dfs(k + 1);
visit[i] = false;
}
}
}
}