剑指offer——面试题17:打印从1到最大的n位数
#include"iostream"
#include"string.h"
using namespace std; bool AddOne(char *number,int n);
void PrintNumber(char *number,int n); void Print1ToN(int n)
{
if(n<=)
return;
char *number=new char[n+];
memset(number,'',n);
number[n]='\0';
while(AddOne(number,n))
{
PrintNumber(number,n);
}
delete[] number;
} bool AddOne(char *number,int n)
{
bool isInRange=true;
int carry=;
int iDigit;
for(int i=n-;i>=;i--)
{
iDigit=number[i]-''+carry;
if(i==n-)
iDigit++;
if(iDigit>=)
{
if(i==)
isInRange=false;
else
{
carry=iDigit/;
iDigit%=;
number[i]=iDigit+'';
}
}
else
{
number[i]=iDigit+'';
break;
}
}
return isInRange;
} void PrintNumber(char *number,int n)
{
bool firstNoZero=false;
for(int i=;i<n;i++)
{
if(!firstNoZero&&number[i]!='')
{
firstNoZero=true;
}
if(firstNoZero)
cout<<number[i];
}
cout<<endl;
}
int main()
{
int n;
while(cin>>n)
{
Print1ToN(n);
}
return ;
}
还可以用全排列的思想,递归调用去解决:
#include"iostream"
using namespace std; void Print1ToNRecursively(int *number,int length,int index);
void PrintNumber(int *number,int n); void Print1ToN(int n)
{
int *number=new int[n]; for(int i=;i<;i++)
{
number[]=i;
Print1ToNRecursively(number,n,);
}
} void Print1ToNRecursively(int *number,int length,int index)
{
if(index==length-)
{
PrintNumber(number,length);
return;
}
for(int i=;i<;i++)
{
number[index+]=i;
Print1ToNRecursively(number,length,index+);
}
} void PrintNumber(int *number,int n)
{
int i=-;
while(i<n&&number[++i]==) continue;
while(i<n) cout<<number[i++];
cout<<endl;
} int main()
{
int n;
while(cin>>n)
{
Print1ToN(n);
}
return ;
}
剑指offer——面试题17:打印从1到最大的n位数的更多相关文章
- 剑指Offer:面试题12——打印1到最大的n位数(java实现)
问题描述: 输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999. 思路1:最简单的想法就是先找出最大的n位数,然后循环打印即可. public ...
- 剑指Offer:面试题17——合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路1: 分别用p1,p2两个指针扫描两个有序链表,p3指针去构建新链表h3. p1.val & ...
- 【剑指offer 面试题17】合并两个排序的链表
思路: 比较两个链表端点值的大小,通过递归的方式排列. #include <iostream> using namespace std; struct ListNode { int val ...
- 剑指offer面试题17:合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点人是按照递增排序的.解题思路:两个链表分别都已经是有序的了,遍历链表的时候只要比较两个链表当前位置大小,取出最小的添加到新链表中. 可以有 ...
- 【剑指offer】面试题 17. 打印从 1 到最大的 n 位数
面试题 17. 打印从 1 到最大的 n 位数 题目描述 题目:输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999. 解答过 ...
- C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
剑指offer 面试题23:从上往下打印二叉树 参与人数:4853 时间限制:1秒 空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...
- C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解
剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...
- 【剑指Offer面试题】 九度OJ1368:二叉树中和为某一值的路径
题目链接地址: http://ac.jobdu.com/problem.php? pid=1368 题目1368:二叉树中和为某一值的路径 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2252 ...
- 【剑指Offer面试题】 九度OJ1371:最小的K个数
题目链接地址: http://ac.jobdu.com/problem.php?pid=1371 题目1371:最小的K个数 时间限制:1 秒内存限制:32 兆特殊判题:否提交:5938解决:1265 ...
随机推荐
- 实践作业4---DAY4阶段三。
阶段三:给出结论 这一阶段,我们首先列表从核心功能.细节.用户体验.辅助功能差异化功能.软件的适应性和成长性展开.我们得结论前参考了权威网站数据.并自己也做了相应分析. 结论:经过这么多工作,这个软件 ...
- [GO]文件的读写
首先写一个文件 package main import ( "os" "fmt" ) func WriteFile(path string) { //打开文件, ...
- ES 遇到的一个坑too_many_clauses: maxClauseCount
异常: Caused by: org.elasticsearch.common.io.stream.NotSerializableExceptionWrapper: too_many_clauses: ...
- windows游戏开发中一个关于Visual Studio的编译链接成功,输出窗口却显示线程已退出。无法运行项目的问题
可能是显卡驱动程序版本太高了,退回到以前的版本就ok了. 第一次遇见这个问题可把我给整疯了!! 后来又遇到一次,参考之前的解决方法,很快就搞定了!! 可见,经验可是很重要的一个东西啊.
- 一些linux工具在windows版本下的文件放置位置
首先说明一下windows下的常用变量(这里是XP的,win7及以上的C:\Documents and Settings实际为C:\Users) %SystemDrive% 操作系统所在 ...
- 加载log文件
procedure Jslog(szLogText:string);var pMyFile : TextFile;begin Assignfile(pMyFile, 'log.txt'); if Fi ...
- Mac安装Tomcat
1. 到Tomcat官网下载,如下找tar格式文件: http://ftp.twaren.net/Unix/Web/apache/tomcat/tomcat-8/v8.0.41/bin/apache- ...
- duilib入门简明教程 -- XML基础类(7)
现在大家应该对XML描述界面不那么陌生了,那么我们做进一步介绍. 前面的教程我们写了很多代码,为的是让大家了解下基本流程,其实duilib已经对常用的操作做了很好的包装,正式使用时无需像前面的教程那样 ...
- 【git】常用命令
// 下载Git项目git clone url // 显示当前git配置git config --list // 设置用户信息git config --global user.name "& ...
- django drf viewsets和routers
1.定义VIew from django.shortcuts import render from rest_framework.views import APIView from rest_fram ...