标签:mem div 数字 new stream offer 字符串 main namespace
/* 题目: 输入数字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("\n"); } void PrintToMaxOfDigits(int n){ if(n <= 0) return; char* numbers = new char[n+1]; memset(numbers,‘0‘,n); numbers[n] = ‘\0‘; while(Increment(numbers,n)){ PrintNumbers(numbers,n); } delete[] numbers; } int main(){ PrintToMaxOfDigits(3); }
标签:mem div 数字 new stream offer 字符串 main namespace
原文地址:https://www.cnblogs.com/buaaZhhx/p/11862645.html