剑指offer-面试题17-打印从1到最大的n位数-数字

Posted buaazhhx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer-面试题17-打印从1到最大的n位数-数字相关的知识,希望对你有一定的参考价值。

/*
题目:
	输入数字n,按顺序打印从1到最大的n位十进制数。
	如输入3,打印从1,2,3到999。
*/
/*
思路:
	大数问题转化为字符串或数组。
*/
#include<iostream>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stdio.h>
using namespace std;

bool Increment(char* numbers,int n){

    for(int i = n-1; i >= 0; i--){
        if(numbers[i] < ‘9‘){
            numbers[i] += 1;
            return true;
        }else{
            numbers[i] = ‘0‘;
        }
    }
    if(numbers[0] == ‘0‘) return false;
    return true;
}

void PrintNumbers(char* numbers,int n){
    int i = 0;
    while(numbers[i] == ‘0‘){
        i++;
    }
    for(int j = i; j < n; j++){

        printf("%c",numbers[j]);
    }
    printf("
");
}


void PrintToMaxOfDigits(int n){
    if(n <= 0) return;
    char* numbers = new char[n+1];
    memset(numbers,‘0‘,n);
    numbers[n] = ‘‘;
    while(Increment(numbers,n)){
        PrintNumbers(numbers,n);
    }
    delete[] numbers;
}


int main(){
    PrintToMaxOfDigits(3);
}

   

以上是关于剑指offer-面试题17-打印从1到最大的n位数-数字的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer——面试题17:打印从1到最大的n位数

LeetCode | 面试题17. 打印从1到最大的n位数剑指OfferPython

剑指offer 面试17题

乱序版 ● 剑指offer每日算法题打卡题解——分治算法(题号17,14)

《剑指offer》第十七题:打印1到最大的n位数

剑指 Offer 17. 打印从1到最大的n位数