剑指offer-面试题12.打印1到最大的n位数
题目:输入数字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.结束条件,当第一位字符发生进位时说明已经遍历到最大了,结束
代码如下:
#include <iostream>
using namespace std; bool add(char *nums);
void Print1ToMaxOfNDigits(int n)
{
if(n<=)
return; char *nums=new char[n+];
memset(nums,'',n);
nums[n]='\0'; int jinwei=;
bool overflag=false; while(!add(nums))
{
int flag=;
for(int i=;i<n;i++)
{
if(nums[i]!=||flag)
{
flag=;
cout<<nums[i];
}
}
cout<<endl;
} return;
} bool add(char *nums)
{
int len=strlen(nums);
bool ismax=false;
int jinwei=; for(int i=len-;i>=;i--)
{
int temp=nums[i]-''+jinwei;
if(i==len-)
temp++; if(temp>=)
{
if(i==)
{
ismax=true;
}
else
{
temp=temp-;
jinwei=;
nums[i]=''+temp;
}
}
else
{
nums[i]=temp+'';
break;
}
} return ismax;
} int main(int argc, char* argv[])
{
int n;
cout<<"Please input the n: ";
cin>>n;
Print1ToMaxOfNDigits(n);
return ;
}
运行结果:

当然剑指Offer还提到了全排列的方法,有兴趣的读者自行参考
剑指offer-面试题12.打印1到最大的n位数的更多相关文章
- 剑指Offer:面试题12——打印1到最大的n位数(java实现)
问题描述: 输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999. 思路1:最简单的想法就是先找出最大的n位数,然后循环打印即可. public ...
- 剑指Offer - 九度1515 - 打印1到最大的N位数
剑指Offer - 九度1515 - 打印1到最大的N位数2013-11-30 01:11 题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例.对于每个测试案 ...
- 【剑指offer 面试题12】打印1到最大的n位数
思路: 用n位字符数组表示n位数,通过递归的方式逐层(位)遍历,递归终止时打印. #include "stdio.h" #include "string.h" ...
- 剑指offer面试题12-打印1到最大的n位数
题目: 输入一个数字n,按顺序打印出从1最大的n位十进制数.比方输入3,则打印出1.2.3最大的三位数即999 这道题的主要陷阱就在大数的处理,仅仅要将这个考虑进去,用字符串来表示.就好说了. 那差点 ...
- 剑指offer编程题Java实现——面试题12打印1到最大的n位数
题目:打印1到最大的n位数 输入数字n,按顺序打印输出从1到最大的n位十进制数,比如输入3,打印从1到999. 这道题考察的地方是如何表示大数问题.由于n是任意大的数组,如果n太大的话n位数就超过了l ...
- C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
剑指offer 面试题23:从上往下打印二叉树 参与人数:4853 时间限制:1秒 空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...
- 【剑指Offer面试题】 九度OJ1368:二叉树中和为某一值的路径
题目链接地址: http://ac.jobdu.com/problem.php? pid=1368 题目1368:二叉树中和为某一值的路径 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2252 ...
- 剑指Offer——笔试题+知识点总结
剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观, ...
- C++版 - 剑指Offer 面试题39:二叉树的深度(高度)(二叉树深度优先遍历dfs的应用) 题解
剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树 ...
- C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解
剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...
随机推荐
- 理解 Linux 配置文件分类和使用
理解 Linux 配置文件分类和使用 本文说明了 Linux 系统的配置文件,在多用户.多任务环境中,配置文件控制用户权限.系统应用程序.守护进程.服务和其它管理任务.这些任务包括管理用户帐号.分配磁 ...
- Best Meeting Point 解答
Question A group of two or more people wants to meet and minimize the total travel distance. You are ...
- 什么是野指针?(What is a wild pointer?)
未被初始化的变量称为野指针(wild pointer).顾名思义,我们不知道这个指针指向内存中的什么地址,使用不当程序会产生各种各样的问题. 理解下面的例子: int main() { int *p; ...
- bzoj2741(分块+可持久化Trie)
题意中文我就不说了 解析: 分块+可持久化Trie,先得到前缀异或值,插入到Trie中,然后分块,对每一块,处理出dp[i][j](i代表第几块,j代表第几个位置),dp[i][j]代表以第i块开始的 ...
- 【HDU1754】I Hate It(线段树)
update:单点替换 query:区间最值 #include <iostream> #include <cstring> #include <cstdlib> # ...
- UGUI Button和Toogle动态添加事件
如果你想动态创建Button和Toogle 等等一系列控件,需要动态添加事件的如下. 拿button和Toogle抛砖引玉O(∩_∩)O~ using UnityEngine; using Syste ...
- pyqt 同时勾选多个items(网友提供学习)
框选多个item之后,用空格键可以勾选/去选多个item,效果如下图所示: http://oglop.gitbooks.io/pyqt-pyside-cookbook/list/img/checkbo ...
- PPT去掉图片白色背景
双击图片,点击菜单栏“删除背景”,用矩形框选中想要的区域,然后将鼠标焦点移到图片外,单击鼠标即可.
- UIImage与UIColor互转
Objective-C UIColor -> UIImage ? 1 2 3 4 5 6 7 8 9 10 11 - (UIImage*) createImageWithColor: (UICo ...
- [服务器运维][Minecraft服务器搭建]
参考资料: http://neekey.net/2016/02/01/%E5%A6%82%E4%BD%95%E7%94%A8%E9%98%BF%E9%87%8C%E4%BA%91ecs%E6%90%A ...