//和剑指offer程序基本一致,不过print和进位两部分合并在一个程序中
//如果把其分拆,进行适当的整理,代码会更加整洁
void PrintToMaxOfDigitsN(int n)
{
if (n <= ) return; int i = ;
bool sign = false; //判断是否进一位
char *num = new char[n + ], *num_out; //字符串初始化
for ( i = ; i < n; i++)
{
num[i] = '';
}
num[n] = '\0'; while (true)
{
sign = false; if ('' != num[n - ])
{
num[n - ] += ;
}
else
{
for (i = n - ; i >= ; i--)
{
if ('' == num[i])
{
if (!=i)
{
num[i] = '';
}
else
{
delete[] num;
return; //已经输出至最大值
}
}
else
{
num[i + ] = '';
num[i] += ;
break; //+1操作完成,跳出循环
}
}
} num_out = num;
while ('' == *num_out)
{
++num_out;
}
cout << num_out << endl;
}
}

针对此题,还有使用全排列,调用递归实现。

另外,此题不适用char存储的话,可以使用四个bit存储一个十进制数。

最后,针对大数的加减乘除,使用字符串操作实在是虐心,可以使用string实现。

具体可参考:

http://bbs.csdn.net/topics/390499949中赵四老师的相关代码。

打印从1到最大的n位数的更多相关文章

  1. 剑指Offer:打印从1到最大的n位数

    题目:输入数值n,按顺序打印从1到最大的n位数,例如输入n=3,则从1,2,3,一直打印到999 陷阱:若使用循环遍历 1- 999...9 并依次输出,当位数n过大时,无论将其存入int或long或 ...

  2. 大数问题:打印从1到最大的n位数

    //打印从1到最大的n位数:大数问题,用字符串表示数字来避免溢出 bool increment(char* number){ bool isOverFlow = false; int nTakeOve ...

  3. 【剑指offer】面试题 17. 打印从 1 到最大的 n 位数

    面试题 17. 打印从 1 到最大的 n 位数 题目描述 题目:输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999. 解答过 ...

  4. 剑指 Offer 17. 打印从1到最大的n位数

    剑指 Offer 17. 打印从1到最大的n位数 Offer 17 题目解析: 暴力解法 package com.walegarrett.offer; /** * @Author WaleGarret ...

  5. 力扣 - 剑指 Offer 17. 打印从1到最大的n位数

    题目 剑指 Offer 17. 打印从1到最大的n位数 思路1 如果有n位,那么最大值就是\(10^n-1\),即如果n是2,那么最大就到输出到99 考虑到大数情况,所以使用字符数组 还要把字符数组转 ...

  6. 大数相加和大数相乘以及打印从1到最大的n位数

    string add(string a, string b){ int nlength; int diff; if (a.size() > b.size()){ nlength = a.size ...

  7. 剑指offer 打印从1到最大的n位数

    题目描述: 输入数字n,按顺序打印出从1到最大的n位十进制数.比如输入3,则打印出1.2.3一直到最大的3位数999. 分析:注意不能直接输入最大的n位十进制数,因为可能属于大数,这个数无法用int或 ...

  8. 面试题十七:打印从1到最大的n位数

    输入数字n,按顺序打印到最大的n位数 注意:没有规定类型,无论int或long 都会有可能溢出. 应当选择其他类型如String 方法一:定义长度与位数相同的字符数组,从0开始进行加一操作打印 pub ...

  9. 《剑指offer》面试题17. 打印从1到最大的n位数

    问题描述 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数 999. 示例 1: 输入: n = 1 输出: [1,2,3,4,5 ...

  10. [LeetCode]剑指 Offer 17. 打印从1到最大的n位数

    输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数 999. 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7, ...

随机推荐

  1. js实现复选框的全选、全不选、反选

    js中实现复选框的全选,全不选以及反选,分为两种情况: (1)选中“请选择”前面的复选框实现全选,不选中“请选择”前面的复选框实现全不选 <!DOCTYPE html PUBLIC " ...

  2. hibernate 双向一对多关系(Annotation mappedBy注解理解)

    1.@mappedBy 属性简单理解为设定为主表(OneToMany方)(这只是我个人理解,上面文章中也有提到过) 所以另一端(ManyToOne)则需要设置外键@JoinColumn(name=&q ...

  3. 文件上传工具类 UploadUtil.java

    package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...

  4. Spring实战3:装配bean的进阶知识

    主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expressio ...

  5. Python之Fabric模块

    Fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括:命令执行.文件上传.下载及完整执行日 ...

  6. Install and configure Intel NIC teaming on R420

    OS env: windows2008 R2 std 1. Download NIC driver from Dell Website http://www.dell.com/support/home ...

  7. override 修饰符

    override(C# 参考) 要扩展或修改继承的方法.属性.索引器或事件的抽象实现或虚实现,必须使用 override 修饰符. C# abstract class ShapesClass { ab ...

  8. 配置文件——WebApp.config文件读取和修改

    using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using ...

  9. c fopen文件读写

    fopen <cstdio> FILE * fopen ( const char * filename, const char * mode ); Open file Opens the ...

  10. RabbitMQ介绍1 - 由来

    RabbitMQ是一个异步消息通信中间件,用erlang语言开发,实现了AMQP(Advanced Message Queue )协议,是一个开源产品,官方网站:http://www.rabbitmq ...