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;  
                }  
            }  
        }  
    }
  • 相关阅读:
    js保存图片至本地
    ArrayLike
    key的作用
    react Video event
    react中字符串换行
    react打包后找不到静态文件
    2020软件工程第三次作业
    003 Longest Substring Without Repeating Characters
    002addTwoNumbers
    001twoSum
  • 原文地址:https://www.cnblogs.com/ljs-666/p/8595633.html
Copyright © 2011-2022 走看看