zoukankan      html  css  js  c++  java
  • 剑指Offer(书):打印从1到最大的n位数

    题目:输入数字N,按顺序打印出从1到最大的N位十进制数,比如输入3,则打印出1、2、3一直到999

    分析:N的范围不定。所以有可能超出范围,因此用数组存放以及输出。说实话,对复杂递归还是一头雾水

    public void printToMaxOfNDigits(int n){
        if(n<=0){
            return;
        }
        int[] number = new int[n];
        for(int i=0;i<10;i++){
            number[0]=i;
            printToMaxOfNDigitsRecursively(number,n,0);
        }
    }
    
    private void printToMaxOfNDigitsRecursively(int[] number, int n, int index) {
        if(index==n-1){
            printNumber(number);
            return;
        }
        for(int i=0;i<10;i++){
            number[index+1]=i;
            printToMaxOfNDigitsRecursively(number,n,index+1);
        }
    }
    
    private void printNumber(int[] number) {
        boolean isStart0 = true;
        for(int i=0;i<number.length;i++){
            if(isStart0 && number[i]!=0){
                isStart0=false;
            }
            if(!isStart0){
                System.out.print(number[i]);
            }
        }
        System.out.printf("
    ");
    }
  • 相关阅读:
    poj2955(区间dp)
    poj3280(区间dp)
    poj1651(区间dp)
    hdu5001(概率dp)
    hdu4389(数位dp)
    hdu4352(数位dp)
    CF 148D(概率dp)
    zoj3329(概率dp)
    POJ1028 Web Navigation
    POJ1027 The Same Game
  • 原文地址:https://www.cnblogs.com/liter7/p/9437672.html
Copyright © 2011-2022 走看看