剑指offer——面试题17:打印从1到最大的n位数
- #include"iostream"
- #include"string.h"
- using namespace std;
- bool AddOne(char *number,int n);
- void PrintNumber(char *number,int n);
- void Print1ToN(int n)
- {
- if(n<=)
- return;
- char *number=new char[n+];
- memset(number,'',n);
- number[n]='\0';
- while(AddOne(number,n))
- {
- PrintNumber(number,n);
- }
- delete[] number;
- }
- bool AddOne(char *number,int n)
- {
- bool isInRange=true;
- int carry=;
- int iDigit;
- for(int i=n-;i>=;i--)
- {
- iDigit=number[i]-''+carry;
- if(i==n-)
- iDigit++;
- if(iDigit>=)
- {
- if(i==)
- isInRange=false;
- else
- {
- carry=iDigit/;
- iDigit%=;
- number[i]=iDigit+'';
- }
- }
- else
- {
- number[i]=iDigit+'';
- break;
- }
- }
- return isInRange;
- }
- void PrintNumber(char *number,int n)
- {
- bool firstNoZero=false;
- for(int i=;i<n;i++)
- {
- if(!firstNoZero&&number[i]!='')
- {
- firstNoZero=true;
- }
- if(firstNoZero)
- cout<<number[i];
- }
- cout<<endl;
- }
- int main()
- {
- int n;
- while(cin>>n)
- {
- Print1ToN(n);
- }
- return ;
- }
还可以用全排列的思想,递归调用去解决:
- #include"iostream"
- using namespace std;
- void Print1ToNRecursively(int *number,int length,int index);
- void PrintNumber(int *number,int n);
- void Print1ToN(int n)
- {
- int *number=new int[n];
- for(int i=;i<;i++)
- {
- number[]=i;
- Print1ToNRecursively(number,n,);
- }
- }
- void Print1ToNRecursively(int *number,int length,int index)
- {
- if(index==length-)
- {
- PrintNumber(number,length);
- return;
- }
- for(int i=;i<;i++)
- {
- number[index+]=i;
- Print1ToNRecursively(number,length,index+);
- }
- }
- void PrintNumber(int *number,int n)
- {
- int i=-;
- while(i<n&&number[++i]==) continue;
- while(i<n) cout<<number[i++];
- cout<<endl;
- }
- int main()
- {
- int n;
- while(cin>>n)
- {
- Print1ToN(n);
- }
- return ;
- }
剑指offer——面试题17:打印从1到最大的n位数的更多相关文章
- 剑指Offer:面试题12——打印1到最大的n位数(java实现)
问题描述: 输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999. 思路1:最简单的想法就是先找出最大的n位数,然后循环打印即可. public ...
- 剑指Offer:面试题17——合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路1: 分别用p1,p2两个指针扫描两个有序链表,p3指针去构建新链表h3. p1.val & ...
- 【剑指offer 面试题17】合并两个排序的链表
思路: 比较两个链表端点值的大小,通过递归的方式排列. #include <iostream> using namespace std; struct ListNode { int val ...
- 剑指offer面试题17:合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点人是按照递增排序的.解题思路:两个链表分别都已经是有序的了,遍历链表的时候只要比较两个链表当前位置大小,取出最小的添加到新链表中. 可以有 ...
- 【剑指offer】面试题 17. 打印从 1 到最大的 n 位数
面试题 17. 打印从 1 到最大的 n 位数 题目描述 题目:输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999. 解答过 ...
- C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
剑指offer 面试题23:从上往下打印二叉树 参与人数:4853 时间限制:1秒 空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...
- C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解
剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...
- 【剑指Offer面试题】 九度OJ1368:二叉树中和为某一值的路径
题目链接地址: http://ac.jobdu.com/problem.php? pid=1368 题目1368:二叉树中和为某一值的路径 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2252 ...
- 【剑指Offer面试题】 九度OJ1371:最小的K个数
题目链接地址: http://ac.jobdu.com/problem.php?pid=1371 题目1371:最小的K个数 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5938解决:1265 ...
随机推荐
- easyui combogrid 多选加载,保存,显示代码
1.调用代码 UTIL.SetDict($("#txt_ExcludeIndustry_"), "SECTOR_TYPE", true, true, funct ...
- 如何注册facebook应用
最近项目中要做第三方登录,其中就有facebook的,下面讲解一下如何在facebook中创建应用 1.登录facebook的开发者平台(https://developers.facebook.com ...
- Tomcat 开机自启动
一.安装JDK和Tomcat 1,安装JDK:直接运行jdk-7-windows-i586.exe可执行程序,默认安装即可. 备注:路径可以其他盘符,不建议路径包含中文名及特殊符号. 2.安装Tomc ...
- TextView 垂直居中
需要区分的是这里的top,bottom,ascent,descent,baseline是指字内容的属性,通过getPaint().getFontMetricsInt()来获取得到.和字体内容的外部容 ...
- 编写高质量代码改善C#程序的157个建议——建议88:并行并不总是速度更快
建议88:并行并不总是速度更快 并行所带来的后台任务及任务的管理,都会带来一定的开销,如果一项工作本来就能很快完成,或者说循环体很小,那么并行的速度也许会比非并行要慢. 看这样一个例子,我们比较在同步 ...
- Memory Analysis Part 1 – Obtaining a Java Heapdump
转自: https://blog.codecentric.de/en/2008/07/memory-analysis-part-1-obtaining-a-java-heapdump/ For tro ...
- myeclipse设置默认的jsp打开方式
- java反射的补充:桥接方法以及Spring中一些工具类
在上一篇博文中:http://www.cnblogs.com/guangshan/p/4660564.html 源码中有些地方用到了 this.bridgedMethod = BridgeMethod ...
- HTML中的内容总结
一.URL编码类型 对于Get方法,参数是直接通过URL传递的,那这个参数又是根据什么进行编码的呢?对于JSP网页,这个编码是通过第一句描述: <%@ page language="j ...
- nutch2.1+mysql+elasticsearch整合linux单机部署
这次主要介绍下nutch2.1和mysql和elasticsearch的整合,是在单机上运行,并不是分布式部署.1.下载nutch2.1 nutch下载地址:http://labs.mop.com/a ...