算法提高 排列数 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;
}
}
}
}
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;
}
}
}
}
相关文章推荐
- 算法笔记_099:蓝桥杯练习 算法提高 排列数(Java)
- 蓝桥杯 ADV-188 算法提高 排列数(java) 深度优先搜索 DFS
- 算法-蓝桥杯-算法提高 排列数(JAVA)
- 算法笔记_100:蓝桥杯练习 算法提高 三个整数的排序(Java)
- 蓝桥杯练习系统VIP试题-算法提高-阶乘计算
- 蓝桥杯_算法提高_排列数(深度搜索、递归)
- 排列数(输出0~9的全排列)-蓝桥杯算法提高
- 算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)
- 蓝桥杯 ADV-166 算法提高 聪明的美食家 java版
- 蓝桥杯 算法提高 6-17复数四则运算 java
- 蓝桥杯 ADV-188 算法提高 排列数
- 蓝桥杯系统训练:算法提高 日期计算
- 算法笔记_104:蓝桥杯练习 算法提高 新建Microsoft Word文档(Java)
- 蓝桥杯练习系统算法提高—最大乘积
- 算法笔记_101:蓝桥杯练习 算法提高 身份证号码升级(Java)
- 算法笔记_097:蓝桥杯练习 算法提高 P1001(Java)
- 蓝桥杯 ADV-205 算法提高 拿糖果 java版
- 蓝桥杯--算法提高 排列数 (简单dfs)
- 算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)
- 蓝桥杯练习系统试题集 算法提高 ADV-147 学霸的迷宫