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

    题目:

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

    参考大数运算的方法。考虑到位数会很大,所以采用字符串的形式解决。对输入的n,创建一个长度为n的数组,分别存放打印时数字的每一位,高位用0补足。为方便使用字符串打印结果,所以数组中存的都是字符型式的0-9

    解法:

    def print_one_max_number(n):
        if n <= 0:
            return False
        number = ['0' for x in range(n)]
        for i in range(n):    # 打印1位数到n位数(i表示的位数为i+1,i=0表示位数为1,i=1表示位数为2...)
            func(number, n, i)
    
    
    # 此函数依次改变位数上的值来打印这个数
    def func(number, n, i):
        if not i:    # 如果位数是1(i=0),直接改变个位数
            for j in range(10):
                number[n - i - 1] = str(j)
                print_number(n, number)
            return
        for j in range(1, 10):    # 当位数大于1 时,依次确定从高位向低位的值。
            number[n - i - 1] = str(j)
            func(number, n, i - 1)
    
    
    #    打印number数组中存放的具体数值
    def print_number(n, number):
        for i in range(n):
            if number[i] != '0':
                print(''.join(number[i:]))
                return
    
    
    # 测试:
    print_one_max_number(3)
    
  • 相关阅读:
    ABP 往前端返回详细的错误信息
    ABP 报错1
    three.js 测试1
    three.js 添加 图形控制界面 gui
    three.js 设置透明度
    three.js 基础使用1
    three.js 添加环境光
    three.js 添加三维坐标系
    P2690 接苹果
    [USACO08FEB]修路Making the Grade
  • 原文地址:https://www.cnblogs.com/ChangAn223/p/10939914.html
Copyright © 2011-2022 走看看