海涛老师的面试题-作业12-打印从1到最大的n位数
2012-06-27 20:01
393 查看
View Code
// 打印从1到最大的n位数.cpp : 定义控制台应用程序的入口点。 // /******************************************** 题目:输入数字n,按顺序打印从1到最大的n位十进制数, 比如3,则打印1,2,3,一直到999; ********************************************/ #include "stdafx.h" #include <string.h> #include <iostream> using namespace std; void PrintNumber(char* Number) { bool isBegin=true; int nLength=strlen(Number); for(int i=0;i<nLength;i++) { if(isBegin&&Number[i]!='0') isBegin=false; if(!isBegin) cout<<Number[i]; } cout<<"\t"; } bool Increment(char* Number) { bool IsOverflow=false; int nTakeOver=0; int nLength=strlen(Number); for(int i=nLength-1;i>=0;i--) { int nSum=Number[i]-'0'+nTakeOver; if(i==nLength-1) nSum++; if(nSum>=10) { if(i==0) IsOverflow=true; else { nSum-=10; nTakeOver=1; Number[i]=nSum+'0'; } } else { Number[i]='0'+nSum; break; } } return IsOverflow; } void Print1ToMaxOfDigits(int n) { if(n<0) return; char *Number=new char[n+1]; memset(Number,'0',n); Number ='\0'; while(!Increment(Number)) PrintNumber(Number); delete []Number; } void Print1ToMaxNDigitsRecur(char *Number,int Length,int index) { if(index==Length-1) { PrintNumber(Number); return; } for(int i=0;i<10;++i) { Number[index+1]=i+'0'; Print1ToMaxNDigitsRecur(Number,Length,index+1); } } void Print1ToMaxtOfNDigits(int n) { if(n<=0) return; char* Number=new char[n+1]; Number ='\0'; for(int i=0;i<10;i++) { Number[0]=i+'0'; Print1ToMaxNDigitsRecur(Number,n,0); } } int _tmain(int argc, _TCHAR* argv[]) { //Print1ToMaxOfDigits(5); Print1ToMaxtOfNDigits(5); return 0; }
相关文章推荐
- 面试题12:打印1到最大的n位数
- 剑指offer-chapter3-面试题12-打印1到最大的n位数(java)
- 面试题12:打印1到最大的n位数
- 剑指Offer之面试题12:打印1到最大的N位数
- Java之BigInteger(面试题12:打印1到最大的n位数)
- 剑指offer编程题Java实现——面试题12打印1到最大的n位数
- 剑指Offer-面试题12:打印1到最大的n位数
- 剑指offer面试题12 打印1到最大的n位数
- 【剑指Offer学习】【面试题12 :打印1 到最大的n 位数】
- 剑指offer——面试题12:打印1到最大的n位数
- 剑指offer面试题12:打印1到最大的n位数
- 【剑指offer】面试题12、打印 1 到最大的 n 位数
- 剑指Offer:面试题12 打印1到最大的n位数
- 剑指offer编程题Java实现——面试题12打印1到最大的n位数
- (剑指Offer)面试题12:打印1到最大的n位数
- 面试题12:打印1到最大的N位数
- 面试题 12: 打印1到最大的n位数
- 剑指offer-面试题12:打印1到最大的n位数
- 【剑指offer 面试题12】打印1到最大的n位数
- 剑指offer_面试题12_打印1到最大的n位数(大数问题)