码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer (12) 打印1到最大的n位数

时间:2014-06-09 16:09:48      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

题目描述:

给定一个数字N,打印从1到最大的N位数

此题需要注意以下几点:

1. 涉及到大数问题,因为并没有限定 n的取值范围,所以需要采取 字符数组模拟大数运算

2. 打印数字时 需要忽略前置0

3. 我们始终 以n位数为整体,n位所有十进制数其实是 n位从0到9的全排列,可以采用递归解决

我们从 数组下标0开始 (对应于数字最高位),每一位都有0到9取值,然后设置下一位,递归的结束条件是 设置位到了数组的最末端

 

bubuko.com,布布扣
 1 void PrintNum(char* num)
 2 {
 3     char* cur = num;
 4     while (*cur == 0) {
 5         ++cur;
 6     }
 7     if (cur != num + strlen(num)) {
 8         fprintf(stdout, "%s\n", cur);
 9     }
10 }
11 
12 void Print(char* num, int len, int index)
13 {
14     if (index == len) {
15         PrintNum(num);
16         return;
17     }
18 
19     for (int i = 0; i < 10; ++i) {
20         num[index] = i + 0;
21         Print(num, len, index + 1);
22     }
23 }
bubuko.com,布布扣

 

剑指offer (12) 打印1到最大的n位数,布布扣,bubuko.com

剑指offer (12) 打印1到最大的n位数

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/wwwjieo0/p/3776344.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!