题目要求:

  输入数字n,按顺序输出从1到最大的n位10进制数。

  例如,输入3,则输出1、2、3...、999(最大的3位数)。

  参考资料:剑指offer第12题。

题目分析:

  如果我们在数字前面补0的话,就会发现n位所有十进制数其实就是n个从0到9的全排列。也就是说,我们把数字的每一位都从0到9排列一遍,就得到了所有的十进制数。只是我们打印的时候,数字排在前面的0我们不打印出来而已。

代码实现:

  

#include <iostream>

using namespace std;

const int N = ;
void PrintToMaxOfNDigits(int n); int main(void)
{
cout << "打印1到最大的 " << N <<" 位数:" << endl;
PrintToMaxOfNDigits(N);
cout << endl;
return ;
}
void Print(char *num)
{
bool isBeginning = true;
int len = strlen(num);
for(int i = ;i<len;i++)
{
if(isBeginning && num[i] != '')
isBeginning = false;
if(!isBeginning)
cout << num[i];
}
cout << " ";
}
void PrintCore(char *num,int len,int index)
{
if(index == len-)
{
Print(num);
return;
}
for(int i=;i<;i++)
{
num[index+] = i+'';
PrintCore(num,len,index+);
}
}
void PrintToMaxOfNDigits(int n)
{
if(n <= )
return;
char *num = new char[n+];
num[n] = '\0';
for(int i=;i<;i++)
{
num[] = i+'';
PrintCore(num,n,);
}
}

最新文章

  1. Wakez计算与压缩的思考
  2. JqueryEasyUI之DataGrid扩展
  3. UI设计
  4. [LeetCode] Ugly Number
  5. Extract QQ from iPhone and analyze it
  6. ubuntu 10.04 fcitx 4.12 实现按下shit切换输入法同时提交英文输入
  7. POJ2104 k-th number 划分树
  8. “layout_”下划线开头的属性
  9. 0301——Notification 通知
  10. 设计模式 ( 十三 ) 命令模式Command(对象行为型)
  11. move UVs of a texture
  12. loadrunner&#160;脚本开发-定义全局变量
  13. GIthub地址
  14. [No0000DB]C# FtpClientHelper Ftp客户端上传下载重命名 类封装
  15. Shell 一键安装命令
  16. Windows 系统采用批处理命令修改 ip 地址
  17. 01 Linux 网络配置和克隆
  18. redisTools-IdGenerator
  19. tomcat7以上的版本,400BadRequest
  20. hdu6415 Rikka with Nash Equilibrium (DP)

热门文章

  1. javascript浮点值运算舍入误差
  2. EasyUI整理学习
  3. amap -bq 192.168.5.9 80 3306
  4. php 实现格式化数字功能
  5. Java Annotation使用详解
  6. IFEO 映像文件劫持
  7. IOS Modal(切换另外控件器方式)
  8. POJ 3666 Making the Grade(区间dp)
  9. CSS布局--垂直水平居中
  10. Bootstrap 按钮(Button)插件加载状态