剑指offer-面试题12.打印1到最大的n位数
2016-04-07 20:20
507 查看
题目:输入数字n,按照打印出从1最大的n位10进制数。比如3,则打印出1、2、3一直到最大的3位数即999
1.你觉得如果面试会有这么简单的题,那只能说明你---太天真。
2.n=3尚可,如果n=30 300呢有这样的内置数据类型能包括这么大的数吗?
3.说白了,这道题就是考察用字符串模拟大数。
算法思想如下:
1.分配大小为n+1个字符的内存 初始化为'0' 最后一个'\0'
2.模拟加法,每一位字符上的范围为'0'-'9'当超过之后进位,
3.结束条件,当第一位字符发生进位时说明已经遍历到最大了,结束
代码如下:
运行结果:
当然剑指Offer还提到了全排列的方法,有兴趣的读者自行参考
1.你觉得如果面试会有这么简单的题,那只能说明你---太天真。
2.n=3尚可,如果n=30 300呢有这样的内置数据类型能包括这么大的数吗?
3.说白了,这道题就是考察用字符串模拟大数。
算法思想如下:
1.分配大小为n+1个字符的内存 初始化为'0' 最后一个'\0'
2.模拟加法,每一位字符上的范围为'0'-'9'当超过之后进位,
3.结束条件,当第一位字符发生进位时说明已经遍历到最大了,结束
代码如下:
1 #include <iostream> 2 using namespace std; 3 4 bool add(char *nums); 5 void Print1ToMaxOfNDigits(int n) 6 { 7 if(n<=0) 8 return; 9 10 char *nums=new char[n+1]; 11 memset(nums,'0',n); 12 nums ='\0'; 13 14 int jinwei=0; 15 bool overflag=false; 16 17 while(!add(nums)) 18 { 19 int flag=0; 20 for(int i=0;i<n;i++) 21 { 22 if(nums[i]!=0||flag) 23 { 24 flag=1; 25 cout<<nums[i]; 26 } 27 } 28 cout<<endl; 29 } 30 31 return; 32 } 33 34 bool add(char *nums) 35 { 36 int len=strlen(nums); 37 bool ismax=false; 38 int jinwei=0; 39 40 for(int i=len-1;i>=0;i--) 41 { 42 int temp=nums[i]-'0'+jinwei; 43 if(i==len-1) 44 temp++; 45 46 if(temp>=10) 47 { 48 if(i==0) 49 { 50 ismax=true; 51 } 52 else 53 { 54 temp=temp-10; 55 jinwei=1; 56 nums[i]='0'+temp; 57 } 58 } 59 else 60 { 61 nums[i]=temp+'0'; 62 break; 63 } 64 } 65 66 return ismax; 67 } 68 69 int main(int argc, char* argv[]) 70 { 71 int n; 72 cout<<"Please input the n: "; 73 cin>>n; 74 Print1ToMaxOfNDigits(n); 75 return 0; 76 }
运行结果:
当然剑指Offer还提到了全排列的方法,有兴趣的读者自行参考
相关文章推荐
- 剑指offer-面试题11.数值的整数次方
- 优秀程序员应具备的5项基本素质
- 优秀程序员应具备的5项基本素质
- 剑指offer-面试题10:二进制中1的个数
- LeetCode(32)-Binary Tree Level Order Traversal
- 剑指offer-面试题9.斐波拉契数列
- 剑指offer-面试题8.旋转数组的最小数字
- 剑指offter-面试题7.用两个栈实现队列
- 剑指offer-面试题6.重建二叉树
- 剑指offer-面试题5.从尾到头打印链表
- 剑指offer-面试题4.替换空格
- 剑指offer-面试题3.二维数组中的查找
- 剑指offer-面试题2.实例Singleton模式
- 剑指offer面试题 圆圈中最后剩下的数字(约瑟夫环问题)
- 剑指offer面试题 扑克牌的顺子
- 剑指offer-面试题1:赋值运算符函数
- 百度面试题:宏的概念,与函数的区别,优缺点的比较
- IT职业发展路线图
- Java程序员的日常——经验贴(纯干货)二
- 面试题53 正则表达式匹配