/*问题描述 0、1、2三个数字的全排列有六种,按照字母序排列如下: 012、021、102、120、201、210 输入一个数n 求0~9十个数的全排列中的第n个(第1个为0123456789)。 输入格式 一行,包含一个整数n 输出格式 一行,包含一组10个数字的全排列 样例输入 1 样例输出 0123456789 数据规模和约定 0 < n <= 10!*/ package test; import java.util.Arrays; import java.util.Scanner; public class 排列数 { static int[] num=new int[10]; static boolean[] vis=new boolean[10]; static int n; public static void main(String arg[]){ Arrays.fill(num, 0); Arrays.fill(vis, false); Scanner input=new Scanner(System.in); n=input.nextInt(); bfs(0); } private static void bfs(int p) //p当前位数 { if(p==10) { n--; if(n==0) { for(int i=0;i<=9;i++) System.out.print(num[i]); } return ; } for(int i=0;i<=9;i++) //i数字0-9 { if(!vis[i]) { num[p]=i; vis[i]=true; bfs(p+1); //按照顺序会先找到所有数都选的情况,再从最后一位数字退出 vis[i]=false; } } } }