打印1到最大的n位数
2014-04-14 14:33
316 查看
题目:打印1到最大的n位数
考点:怎样避免使用基本类型的溢出 怎样使用字符串模拟数字
代码:
扩展:您同样可以使用排列完成以上任务,不妨一试。
reference:剑指offer(何海涛著)
考点:怎样避免使用基本类型的溢出 怎样使用字符串模拟数字
代码:
#include<iostream> using namespace std; bool Increment(char* number); void PrintNumber(char* number); void printToMaxOfNDigits(int n) { if(n<0) return; char *number=new char[n+1]; memset(number,'0',n); while(!Increment(number)) { PrintNumber(number); } delete[] number; } 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]='0'+nSum; } } else { number[i]='0'+nSum; break; } } return isOverflow; } void PrintNumber(char* number) { bool isBeginning0=true; int nLength=strlen(number); for(int i=0;i<nLength;++i) { if(isBeginning0&&number[i]!='0') isBeginning0=false; if(!isBeginning0) printf("%c",number[i]); } printf("\t"); } int main() { printToMaxOfNDigits(2); }
扩展:您同样可以使用排列完成以上任务,不妨一试。
reference:剑指offer(何海涛著)
相关文章推荐
- 菜鸟系列之C/C++经典试题(十)
- 剑指offer:打印1到最大的n位数
- 《剑指offer》刷题笔记(代码完整性):打印1到最大的n位数
- 面试题12-打印1到最大的n位数
- 剑指offer面试题[12]-打印1到最大的n位数
- 三层架构和SQL语言
- IOS 使用Xcode5制作静态库详解
- JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案
- 37条Java面向对象设计的经验原则,成为高级程序员必备
- Android make: *** No rule to make target
- Exadata V2数据库一体机的几大致命缺点
- 美国时代周刊关于心脏流血漏洞的报道
- 友元解决了那些问题
- Median of Two Sorted Arrays
- iOS-Label中字符显示
- 手把手教你uiautomator_android自动化测试第一个示例
- win7 64位 VC 2010下配置OpenCV2.4.4
- nginx跨域
- Python 用hashlib求中文字符串的MD5值
- Ubuntu修改环境变量