zoukankan      html  css  js  c++  java
  • 给定数字N,输出小于10^N的所有整数

    讲起来比较简单,从0到N遍历输出就行了,但是如果N非常大,就涉及整数溢出问题,很明显是一个全排列问题,也就是输出N,代表N位上所有的数字取值是0-9,做一个全排列,还需要考虑的就是对于0001,0068,0977类似这种前面有0的情况输出的时候需要去除掉。

    就是一个基础的递归求全排列问题,当然也可以不用递归用栈来解决,这里给出了一个递归的java版本。

    public class Test {
    
        public static void recur(int[] arr, int index){
            if(index > arr.length - 1){
                // 输出
                //判断从第几位开始输出
                int start_id = 0;
                for(int j = 0; j < arr.length; j ++){
                    if(arr[j] == 0){
                        start_id += 1;
                    }
                    else{
                        break;
                    }
                }
                for(int j = start_id; j < arr.length; j ++){
                    System.out.print(arr[j]);
                }
                System.out.println();
                return;
            }
            for(int i = 0; i <= 9; i ++){
                arr[index] = i;
                recur(arr, index + 1);
            }
            arr[index] = 0;
    
        }
    
        public static void main(String[] args){
            int[] arr = new int[4];
            recur(arr, 0);
        }
    }
    

      

  • 相关阅读:
    java常见面试题汇总(一)
    我的自学之路:java学习路线图分享
    bzoj3714 [PA2014]Kuglarz
    cf478D Red-Green Towers
    cf478C Table Decorations
    cf478B Random Teams
    cf479A Expression
    cf479C Exams
    cf479D Long Jumps
    cf479E Riding in a Lift
  • 原文地址:https://www.cnblogs.com/zhouxiaosong/p/11402285.html
Copyright © 2011-2022 走看看