输出1到最大的N位数
来源:互联网 发布:java计算cpu使用率 编辑:程序博客网 时间:2024/05/16 10:30
输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999。
这个题目主要考虑的是大整数越界的问题,下面采用了两种方法,一种是用数组模拟大整数相加,另一种是用递归的方法,递归的方法代码简单明了,但是就是效率比较低。
下面是我在自己的linux虚拟机上跑出来的5位数所用的时间,即是输出1到99999,非递归的方法时间为:
real 0m14.282s
user 0m0.286s
sys 0m2.157s
递归的方法时间为:
real 0m23.573s
user 0m0.714s
sys 0m3.413s
代码:
#include <iostream>#include <list>using namespace std;void add(int *m, int *n, int len); //m+n的值,结果放在m中bool isEnd(int *m);void print1ToMax_1(int n);//非递归void printNum(list<int> result);void print1ToMax_2(list<int> &result, int n);//递归int main(){ //print1ToMax_1(5); list<int> result; print1ToMax_2(result, 5); return 0;}//------------解法一-------------bool isEnd(int *m){ if(m[0] == 1) return true; else return false;}void add(int *m, int *n, int len){ for(int i=0; i<len; i++) m[i] += n[i]; for(int i=len-1; i>=1; i--) { if(m[i] >= 10) { m[i] /= 10; m[i-1] += 1; } }}void print1ToMax_1(int n){ int *num = new int[n+1](); int *num_1 = new int[n+1](); num_1[n] = 1; while(!isEnd(num)) { bool flag = false; for(int i=0; i<n+1; i++) { if(flag == false && num[i] != 0) flag = true; if(flag) cout<<num[i]; } cout<<endl; add(num, num_1, n+1); } delete num; delete num_1;}//------------解法二-------------void printNum(list<int> result){ bool flag = false; for(list<int>::const_iterator iter = result.begin(); iter != result.end(); ++iter) { if(flag == false && *iter != 0) flag = true; if(flag) cout<<*iter; } cout<<endl;}void print1ToMax_2(list<int> &result, int n){ if(result.size() == n) { printNum(result); return; } for(int i=0; i<=9; i++) { result.push_back(i); print1ToMax_2(result, n); result.pop_back(); }}
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出1到最大的N位数
- 输出 1 到最大的 N 位数
- 输出1到最大的n位数
- 输出1到最大的n位数
- 输出1到最大的N位数
- 输出0到最大的n位数
- 静态类,静态成员 总结
- 扑克牌的顺子
- LINUX任务(jobs)详解
- 安装win7到移动硬盘(亲自试过了)
- 基于kinect的三维动作重现(一)
- 输出1到最大的N位数
- linux centos 内核编译脚本
- hdu1733 网络流
- 硬盘出现坏道
- c++内存管理与指针的使用
- 总结session.save(user)
- Spring引用Tomcat的 JTA事务
- java webapp嵌入jetty
- 装系统蓝屏