每日一题(64) - 打印1到最大的n位数
2013-08-06 13:08
316 查看
题目和思路来自剑指Offer
题目
思路(1):直接输出
缺点:无法处理大数据
思路(2):字符串模拟输出
思路:字符串模拟加减,此时字符串的低位对应着数据的低位。
代码:
思路:使用数字为数字赋值,此时,字符串的低位对应着数组的高位。
代码:
题目
思路(1):直接输出
缺点:无法处理大数据
思路(2):字符串模拟输出
思路:字符串模拟加减,此时字符串的低位对应着数据的低位。
代码:
#include <iostream> #include <assert.h> using namespace std; void PrintNum(char strArr[],int nMaxLen,int& nPrintBit) { int nCur = 0; for (nCur = 0;nCur < nMaxLen;nCur++) { assert(strArr[nCur] >= '0' && strArr[nCur] <= '9'); if (strArr[nCur] + 1 > '9') { strArr[nCur] = '0'; } else { strArr[nCur]++; break; } } //输出 nPrintBit = max(nCur,nPrintBit); for (int i = nPrintBit;i >= 0;i--) { cout<<strArr[i]; } cout<<endl; } void PrintNum(int nMaxLen)//最大的位数 { assert(nMaxLen > 0); int nLen = nMaxLen; int nCount = 1; //确定待输出的个数 while(nLen--) { nCount *= 10; } //初始化数组 char* strArr = new char[nMaxLen]; for (int i = 0;i < nMaxLen;i++) { strArr[i] = '0'; } //处理数据 int nPrintBit = 0; for (int i = 1;i < nCount;i++) { PrintNum(strArr,nMaxLen,nPrintBit); } } int main() { int nMaxLen = 3; PrintNum(nMaxLen); return 1; }思路(3):数字排列模拟输出
思路:使用数字为数字赋值,此时,字符串的低位对应着数组的高位。
代码:
#include <iostream> using namespace std; /*注意: 在数组strArr中,低地址存储的是待输出数据的高位*/ void Print(char strArr[],int nLen) { int nCur = 0;//从最高位开始,寻找第一个非0数 while(nCur < nLen && strArr[nCur] == '0') { nCur++; } if (nCur < nLen) { for (int i = nCur;i < nLen;i++) { cout<<strArr[i]; } cout<<endl; } } void PrintNum(char strArr[],int nMaxLen,int nMaxNum,int nStart) { if (nStart == nMaxLen) { Print(strArr,nMaxLen); return; } for (int i = 0;i <= nMaxNum;i++) { strArr[nStart] = i + '0'; PrintNum(strArr,nMaxLen,nMaxNum,nStart + 1); } } void PrintNum(int nMaxLen) { int nMaxNum = 9; char* strArr = new char[nMaxLen]; for (int i = 0;i < nMaxLen;i++) { strArr[i] = '0'; } PrintNum(strArr,nMaxLen,nMaxNum,0); } int main() { int nMaxLen = 3; PrintNum(nMaxLen); system("pause"); }
相关文章推荐
- 边看边写(打印1到最大的n位数)
- 《剑指Offer》学习笔记--面试题12:打印1到最大的n位数
- 打印1到最大的n位数。
- 剑指offer---17(打印1到最大n位数)
- 打印1到最大的n位数
- 【剑指offer】面试题12:打印1到最大的n位数
- 面试题(十七)打印1到最大的n位数
- 剑指offer-3-面试12:打印1到最大的n位数
- Q12:打印1到最大的n位数
- 面试题12:打印1到最大的n位数
- 打印从1到最大的n位数
- 【C语言】打印1到最大的n位数
- 打印1到最大的n位数----java实现
- 【面试题十二】打印1到最大的n位数
- 剑指Offer:打印1到最大的N位数
- 从打印1到最大的n位数
- 《剑指offer12——打印1到最大的n位数》
- 面试题12:打印1到最大的n位数
- 【剑指**】17.打印从1到最大的n位数
- 打印1 到最大的n位数