输出1到最大的N位数 【微软面试100题 第六十五题】
题目要求:
输入数字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到最大的N位数 【微软面试100题 第六十五题】的更多相关文章
- 和为n连续正数序列 【微软面试100题 第五十一题】
题目要求: 输入一个正数n,输出所有和为n连续正数序列(至少两个). 例如输入15,由于1+2+3+4+5 = 4+5+6 = 7+8 = 15.所以输出3个连续序列1~5,4~6,7~8. 参考资料 ...
- 和为s的两个数字 【微软面试100题 第十四题】
题目要求: 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 例如输入数组{1,2,4,7,11,15}和数字15.由于4+1 ...
- 链表中倒数第k个结点 【微软面试100题 第十三题】
题目要求: 输入一个链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针. 参考资料:剑指offer第15题 题目分析: 1.两个指针,第一个先走k步,然后两个指针同时走,直到第一个走 ...
- 查找最小的k个元素 【微软面试100题 第五题】
题目要求: 输入n个整数,输出其中最小的k个. 例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4. 参考资料:剑指offer第30题. 题目分析: 解法一: 用快排 ...
- C语言库函数实现 【微软面试100题 第八十三题】
题目要求 1.strcpy/memcpy/memmove: 2.memset函数: 3.字符串处理函数. 题目分析 1.接口定义: char * strcpy(char * dest, const c ...
- Singleton模式类 【微软面试100题 第七十二题】
题目要求: 实现C++单例模式,即只能生成一个实例的类. 题目分析: 1.一般情况:用构造函数私有化和静态函数实现. 2.如果考虑内存泄露:用智能指针+一般情况方法. 3.如果考虑线程安全:加锁. 代 ...
- 在O(1)时间内删除链表结点 【微软面试100题 第六十题】
题目要求: 给定链表的头指针和一个结点指针,在O(1)时间删除该结点. 参考资料:剑指offer第13题. 题目分析: 有几种情况: 1.删除的结点是头结点,且链表不止一个结点: 2.删除的结点是头结 ...
- C++异常安全的赋值运算符重载 【微软面试100题 第五十五题】
题目要求: 类CMyString的声明如下: class CMyString { public: CMyString(char *pData=NULL); CMyString(const CMyStr ...
- 在从1到n的正数中1出现的次数 【微软面试100题 第三十题】
题目要求: 给定 一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数. 例如:N = 2,写下1,2.这样只出现了1个“1”. N = 12 ...
随机推荐
- mui的ajax例子1
mui.ajax()方法,get请求 前端页面: <!DOCTYPE html><html><head> <meta charset="utf-8& ...
- /opt/metasploit/msf3
启动msf终端 cd /opt/metasploit/msf3 msfconsole
- Win10 耳机无声音,扬声器有声音的解决办法
注:适用于WIN10及WIN10.ubuntu双系统耳机无声音的问题. 在WIN10的引导下,安装了Ubuntu的桌面版,作成了双系统,可是发现了一个问题:进入Win10后插耳机会没有声音,扬声器有声 ...
- git入门使用摘录
无论使用github或者gitlab,第一步都是在本地生产ssh-key,ssh-key作为客户端的身份证存放在user用户的.ssh文件夹下.如果之前没有生产过,需要用ssh-keygen命令生成. ...
- 感谢我的python老师
Python自动化开发(金角大王版) http://www.cnblogs.com/alex3714/articles/5885096.html
- java菜鸟的Python学习之路(1)
学习一门新的语言,应当抓住语言的共有特性,这样容易触类旁通,学习起来也十分的快捷愉悦 而语言的特性大约有以下元素 变量定义与类型 算术符号与逻辑符号 for 循环与 while 循环 数组,线性表等一 ...
- Scanner和 Random类,控制语句的例题,商品管理(直接赋值)
Scanner类的使用: import java.util.Scanner; class Demo02 { public static void main(String[] args) { //1.导 ...
- tensorfow install error
http://stackoverflow.com/questions/33655731/error-while-importing-tensorflow-in-python2-7-in-ubuntu- ...
- quartz调度
http://www.cnblogs.com/lzrabbit/archive/2012/04/14/2446942.html
- tomcat服务器用Servlet类查找磁盘文件上的Json信息,如果匹配则在浏览器上显示出该条内容的全部信息
package com.swift; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOE ...