zoukankan      html  css  js  c++  java
  • 打印1到最大的n位数

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

    思路:如果我们在数字前面补0的话,就会发现n位所有十进制数其实就是n个从0到9的全排列。也就是说,我们把数字的每一位都从0到9排列一遍,就得到了所有的十进制数。只是我们在打印的时候,数字排在前面的0我们不打印出来罢了。

      全排列用递归很容易表达,数字的每一位都可能是0-9中的一个数,然后设置下一位。递归结束的条件是我们已经设置了数字的最后一位。

      

    public class Number{
        public void getNumber(int n){
            if(n<0) return ;
            StringBuffer s = new StringBuffer(n);
            for(int i=0;i<n;i++){
                s.append('0');
            }
            for(int i=0;i<10;i++){
                s.setCharAt(0,(char)(i+'0'));
                getNumberRecursive(s,n,0);
            }
        }
        public void getNumberRecursive(StringBuffer s,int n,int index){
            if(index == n-1){
                printNumber(s);
                return;
            }
            for(int i=0;i<10;i++){
                s.setCharAt(index+1,(char)(i+'0'));
                getNumberRecursive(s,n,index+1);
            }
        }
        public void printNumber(StringBuffer s){
            boolean isBeginning0 = true;
            for(int i=0;i<s.length();i++){
                if(isBeginning0 && (s.charAt(i)!='0')){
                    isBeginning0 = false;
                }
                if(!isBeginning0){
                    System.out.println(s.charAt(i));
                }
            }
            System.out.println();
        }
    
        public static void main(String[] args){
            Number n = new Number();
            int m = 3;
            n.getNumber(3);
        }
    }
  • 相关阅读:
    Mongodb在Linux下的安装和启动和配置
    Java线程--Exchanger使用
    Java线程--Phaser使用
    Java线程--CyclicBarrier使用
    Java线程--CountDownLatch使用
    Java线程状态介绍
    Java8 Stream 的一些操作和介绍
    Java正则
    Linux curl命令进行网络请求
    Netty入门使用教程
  • 原文地址:https://www.cnblogs.com/yingpu/p/9236952.html
Copyright © 2011-2022 走看看