zoukankan      html  css  js  c++  java
  • 排列数

    /*问题描述
      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;  
                }  
            }  
        }  
    }
  • 相关阅读:
    JQ选择器
    设计模式
    招银网络面试
    斗鱼面经
    招银科技面经
    用户访问网站基本流程
    shell的条件判断
    crontab -e 和/etc/crontab的区别
    秘钥对登录配置
    CentOS6 x86_64最小化安装优化脚本
  • 原文地址:https://www.cnblogs.com/ljs-666/p/8595633.html
Copyright © 2011-2022 走看看