输出1到最大的N位数 【微软面试100题 第六十五题】
2024-08-28 19:08:46
题目要求:
输入数字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,);
}
}
最新文章
- Wakez计算与压缩的思考
- JqueryEasyUI之DataGrid扩展
- UI设计
- [LeetCode] Ugly Number
- Extract QQ from iPhone and analyze it
- ubuntu 10.04 fcitx 4.12 实现按下shit切换输入法同时提交英文输入
- POJ2104 k-th number 划分树
- “layout_”下划线开头的属性
- 0301——Notification 通知
- 设计模式 ( 十三 ) 命令模式Command(对象行为型)
- move UVs of a texture
- loadrunner&#160;脚本开发-定义全局变量
- GIthub地址
- [No0000DB]C# FtpClientHelper Ftp客户端上传下载重命名 类封装
- Shell 一键安装命令
- Windows 系统采用批处理命令修改 ip 地址
- 01 Linux 网络配置和克隆
- redisTools-IdGenerator
- tomcat7以上的版本,400BadRequest
- hdu6415 Rikka with Nash Equilibrium (DP)