zoukankan      html  css  js  c++  java
  • 剑指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);
    }
    

       

  • 相关阅读:
    validate BST
    LC282. Expression Add Operators
    nginx统计日志命令
    iptables和firewalld命令
    nginx安装
    测试服务器IO
    规范主机名和设置最大文件进程数
    Docker安装
    MySQL/MariaDB二进制安装
    Docker原理
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/11862645.html
Copyright © 2011-2022 走看看