剑指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位数-数字的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode | 面试题17. 打印从1到最大的n位数剑指OfferPython