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  }
  • 相关阅读:
    C#中StringBuilder类的使用总结
    java Socket长链接与消息推送源码与演示
    oracle merge into 小例
    webrtc 关闭摄像头
    WebRTC MediaRecorder API
    简单的菜单三
    简单的菜单二
    简单的菜单 一
    文件断点续传实现 ( 2-- C# 客户端)
    文件断点续传实现 (1 -- java实现)
  • 原文地址:https://www.cnblogs.com/wangzaizhen/p/5195514.html
Copyright © 2011-2022 走看看