剑指Offer面试题:9.打印1到最大的n位数

一题目:打印1到最大的n位数二不考虑大数解法三字符串模拟算法解法解决这个问题需要表达一个大数。最常用也是最容易的方法是用字符串或者数组表达大数。该算法的步骤如下:Step1.把字符串中的

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

一 题目:打印1到最大的n位数

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

二 不考虑大数解法

// 打印从1到最大的n位数
void PrintNumbs(int n)
{
    int nMax = 0;
    for (int i = 1;i <= n; i ++)
    {
        nMax = nMax*10 + 9;
    }
    for (int j = 1; j <= nMax; j ++)
    {
        cout << j << endl;
    }
}

三 字符串模拟算法解法

  解决这个问题需要表达一个大数。最常用也是最容易的方法是用字符串或者数组表达大数。该算法的步骤如下:

  Step1.把字符串中的每一个数字都初始化为’0’;

  Step2.每一次为字符串表示的数字加1,再打印出来;

#include "stdio.h"
#include <iostream>
using namespace std;

bool StructNumber(char *pNumber)
{
    int nLen = strlen(pNumber);
    bool bOver = false;
    for (int i = nLen - 1; i >= 0; i --)
    {
        int nSum = pNumber[i] - '0'+ 1;

        if (nSum >= 10)
        {
            if (0 == i)
            {
                bOver = true;
            }
            else
            {
                nSum -= 10;
                pNumber[i]=nSum+'0';
            }
        }
        else
        {
            pNumber[i] = nSum+'0';
            break;
        }
    }

    return bOver;
}

void PrintCount_1(char *pNumber)
{
    bool bIsBegin = true;
    int nLen = strlen(pNumber);
    for(int i =0;i < nLen; i ++)
    {
        if (bIsBegin && pNumber[i] != '0')
        {
            bIsBegin = false;
        }
        if (!bIsBegin)
        {
            cout << pNumber[i];
        }
    }
    cout << " ";
}

void PrintCount(int n)
{
    char *cNumber = new char[n+1];
    memset(cNumber, '0', n);
    cNumber[n] = '\0';
    int nLen = strlen(cNumber);

    while(!StructNumber(cNumber))
    {
        PrintCount_1(cNumber);
    }
    delete[] cNumber;
}

void main()
{
    PrintCount(3);
    return;
}

 剑指Offer面试题:9.打印1到最大的n位数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120166.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号