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

    题目

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

    分析

      通常的思路是,考虑到整数无法表示的情况(如n=100,而没有100位这样的整数),用字符串数组表示要打印的数,然后模拟基本运算逢9进1位。解题主要分两部分:模拟进位,打印数字

    代码

     1  bool Increment(char *str,int len)
     2  {
     3       int current=0;
     4       for (int i=len-1;i>=0;i--)
     5       {
     6           current=str[i]-'0'+1;
     7           if (current==10)
     8           {
     9               if (i==0)
    10               {
    11                   return false;//最高位溢出
    12               }
    13 
    14               str[i]='0';
    15 
    16           }else
    17           {
    18               str[i]='0'+current;//无进位,未溢出
    19 
    20               return true;
    21           }
    22 
    23       }
    24       return false;
    25  }
    26 
    27  void PrintNumbers(unsigned int size)
    28  {
    29      if (size==0)
    30      {
    31          return;                                                                                                                                                    
    32      }
    33 
    34      char *num=new char[size];
    35      memset(num,'0',size);
    36         
    37      while (Increment(num,size))
    38      {
    39          //Increment success. print
    40          unsigned int begin=0;
    41          for(unsigned int i=0;i<size;i++)
    42          {
    43              if (i>begin)
    44              {
    45                  cout<<num[i];
    46              }else
    47              {
    48                  if (num[i]=='0')//寻找第一个不为'0'的高位
    49                  {
    50                      begin++;
    51                  }else
    52                  {
    53                      cout<<num[begin];
    54                  }
    55 
    56              }
    57          }
    58          cout<<endl;
    59      }
    60 
    61  }
  • 相关阅读:
    JAVA基础总结(二)
    JAVA基础知识-关键字
    JAVA SE基础知识
    (七)uboot NFS启动
    (六)uboot引导启动内核
    U_boot 的 bootcmd 和bootargs参数详解
    uboot报错
    制作uImage
    配置内核支持NFS启动文件系统
    在内核中增加对yaffs文件系统的支持
  • 原文地址:https://www.cnblogs.com/wangzaizhen/p/5195514.html
Copyright © 2011-2022 走看看