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)
    
  • 相关阅读:
    建设全功能团队
    gwt之mvc4g
    SQLServer代码差异备份
    DateTimePicker选择到秒
    SQL定时备份并删除过期备份
    Div文本垂直居中
    WinForm当前窗口抓图
    web架构设计经验分享(转)
    用yui compressor 压缩 javascirpt脚本
    查看sqlserver连接数
  • 原文地址:https://www.cnblogs.com/ChangAn223/p/10939914.html
Copyright © 2011-2022 走看看