标签:c style class blog code java
题目描述:
给定一个数字N,打印从1到最大的N位数
此题需要注意以下几点:
1. 涉及到大数问题,因为并没有限定 n的取值范围,所以需要采取 字符数组模拟大数运算
2. 打印数字时 需要忽略前置0
3. 我们始终 以n位数为整体,n位所有十进制数其实是 n位从0到9的全排列,可以采用递归解决
我们从 数组下标0开始 (对应于数字最高位),每一位都有0到9取值,然后设置下一位,递归的结束条件是 设置位到了数组的最末端
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 }
剑指offer (12) 打印1到最大的n位数,布布扣,bubuko.com
标签:c style class blog code java
原文地址:http://www.cnblogs.com/wwwjieo0/p/3776344.html