您的位置:首页 > 编程语言 > Java开发

算法提高 排列数 JAVA 蓝桥杯练题系统

2018-03-25 13:30 561 查看
问题描述  0、1、2三个数字的全排列有六种,按照字母序排列如下:
  012、021、102、120、201、210
  输入一个数n
  求0~9十个数的全排列中的第n个(第1个为0123456789)。输入格式  一行,包含一个整数n输出格式  一行,包含一组10个数字的全排列样例输入1样例输出0123456789数据规模和约定  0 < n <= 10!

import java.util.*;
public class Main {

static int sum=0;
static int a[]=new int[10];
static int vis[]=new int[10];
public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner input=new Scanner(System.in);
for(int i=0;i<=9;i++)
vis[i]=0;
int n=input.nextInt();
dfs(n,0);
}

public static void dfs(int n,int pos)
{
if(pos==10)
{
sum++;
if(sum==n)
{
for(int i=0;i<10;i++)
System.out.print(a[i]);
}
}

for(int i=0;i<=9;i++)
{
if(vis[i]==0)
{
a[pos]=i;
vis[i]=1;
dfs(n,pos+1);
vis[i]=0;
}
}
}

}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: