剑指Offer算法实现之十二:打印1到最大的n位数
来源:互联网 发布:手机淘宝上怎么开网店 编辑:程序博客网 时间:2024/06/06 05:45
题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印1、2、3一直到最大的3位数字即999.
思路:
① 考虑大数字,采用数组模拟自增运算
② 也可考虑使用基于数组的全排列,使用递归实现
编译环境:ArchLinux+Clang3.3,C++
实现一:数组自增模拟
#include <iostream>#include <cstring>using namespace std;void print1ToMaxNDgts(int n){ if (n <= 0) return; char *ptr = new char[n]; // char is byte, 节省空间。还有其他方法更加节省空间,如位域 memset(ptr, 0, n); bool done = false; ptr[n-1] = 1; // 从1开始打印 while (!done) { int i = 0; while (!ptr[i]) i++; for (; i < n; i++) { // 打印 cout <<(int) ptr[i]; } cout << endl; for (i = n - 1; i >= 0; i--) { // 模拟递增操作 ptr[i] += 1; if (ptr[i] > 9) { if (i == 0) { done = true; break; } ptr[i] = 0; } else { break; } } }}int main(){ print1ToMaxNDgts(2);}
- 剑指Offer算法实现之十二:打印1到最大的n位数
- 剑指Offer之打印1到最大的N位数
- 剑指Offer之打印1到最大的n位数
- 剑指Offer之 - 打印1到最大的n位数
- 剑指offer之打印1到最大的n位数
- 剑指offer:打印1到最大的n位数
- 【剑指offer】打印1到最大的n位数
- [剑指Offer]打印1到最大的n位数
- 【剑指offer】打印1到最大的n位数
- 剑指offer-12 打印1到最大的N位数
- 剑指offer 12 -打印1到最大的n位数
- 剑指offer:打印1到最大的n位数
- 剑指Offer-12-打印1到最大的n位数
- [剑指offer-1515]打印1到最大的N位数
- 剑指offer 打印1到最大的N位数
- 剑指Offer--012-打印1到最大的N位数
- 剑指Offer 打印1到最大的n位数
- 剑指Offer:打印1到最大的N位数
- JDBC访问SQL Server2008
- Hive的原理—— 深入浅出学Hive
- ACMer感想帖/退役帖汇总
- 软件测试知识点
- Matlab连续读取多个文件
- 剑指Offer算法实现之十二:打印1到最大的n位数
- git回滚
- 百度地图中的覆盖物
- 变量使用之前最好初始化
- 详细讲解局域网IP地址
- Linux--12:嫌Ubuntu 12.04字体发虚,对眼睛保护有加的进来
- 杭电3342Legal or Not (拓扑排序)
- Dribbble for windows phone 8
- 我在博客园