Q12:打印1到最大的n位数
2016-07-23 08:32
239 查看
2016-07-13
Q12:打印1到最大的n位数
public
class Q12 {
/**
* 题目:打印1到最大的n位数
* 题目说明:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999.
*/
public
static void main(String[] args) {
// TODOAuto-generated method stub
Q12 test = new Q12();
//test.Print1ToMaxOfNDigits_1(2);
test.Print1ToMaxOfNDigits_2(4);
}
//最基本的解法,存在越界溢出现象,不稳定。
public
void Print1ToMaxOfNDigits_1(int n){
int number = 1;
int i = 0;
//用来控制第n+1位的最小数(例如,输入n=2,则number为100)
while(i<n){
number *= 10;
i++;
}
for(i=0;i<number;i++){
System.out.println(i);
}
}
//把问题转换成数字排列的问题,利用递归实现。
//参数n表示的是一共有多少位
public
void Print1ToMaxOfNDigits_2(int n){
//输入n
则定义一个一维n个元素的数组
int[] array =
new int
;
if(n<0)
return;
PrintArray(array,0);//此处为0时,是从1打印到n位最大数,如果是1则打印n-1位最大数,如果是2则打印n-2为最大数。
//排序从第0位开始
}
private
void PrintArray(int[] array,
int n){
//每一位上的数字都是从0-9的一个全排列
for(int i=0; i<10; i++){
if(n!=array.length){
array
=i;
PrintArray(array, n+1);
}else {
boolean isFirstNo0=false;//布尔变量控制第一个非0字符之前的0不打印
for(int j=0; j<array.length; j++){
if(array[j]!=0){
System.out.print(array[j]);
if(!isFirstNo0)
isFirstNo0=true;
}else {
if(isFirstNo0)
System.out.println(array[j]);
}
}
System.out.println();
return;
}
}
}
}
Q12:打印1到最大的n位数
public
class Q12 {
/**
* 题目:打印1到最大的n位数
* 题目说明:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999.
*/
public
static void main(String[] args) {
// TODOAuto-generated method stub
Q12 test = new Q12();
//test.Print1ToMaxOfNDigits_1(2);
test.Print1ToMaxOfNDigits_2(4);
}
//最基本的解法,存在越界溢出现象,不稳定。
public
void Print1ToMaxOfNDigits_1(int n){
int number = 1;
int i = 0;
//用来控制第n+1位的最小数(例如,输入n=2,则number为100)
while(i<n){
number *= 10;
i++;
}
for(i=0;i<number;i++){
System.out.println(i);
}
}
//把问题转换成数字排列的问题,利用递归实现。
//参数n表示的是一共有多少位
public
void Print1ToMaxOfNDigits_2(int n){
//输入n
则定义一个一维n个元素的数组
int[] array =
new int
;
if(n<0)
return;
PrintArray(array,0);//此处为0时,是从1打印到n位最大数,如果是1则打印n-1位最大数,如果是2则打印n-2为最大数。
//排序从第0位开始
}
private
void PrintArray(int[] array,
int n){
//每一位上的数字都是从0-9的一个全排列
for(int i=0; i<10; i++){
if(n!=array.length){
array
=i;
PrintArray(array, n+1);
}else {
boolean isFirstNo0=false;//布尔变量控制第一个非0字符之前的0不打印
for(int j=0; j<array.length; j++){
if(array[j]!=0){
System.out.print(array[j]);
if(!isFirstNo0)
isFirstNo0=true;
}else {
if(isFirstNo0)
System.out.println(array[j]);
}
}
System.out.println();
return;
}
}
}
}
相关文章推荐
- Android:布局实例之模仿微信Tab
- Fedora22_x86_64通过dnf在线升级到Fedora23_x86_64
- Android使用JNI实现Java与C之间传递数据
- Q11:数值的整数次方
- 如何书写高质量的代码
- Android事件分发
- [李景山php]每天laravel-20160923|Hub.php
- nyist 737 石子合并(一)
- Q10:二进制中1的个数
- UICollectionViewCell的四种创建方法
- [李景山php]每天laravel-20160923|Hub.php
- MySQL使用INSERT插入多条记录
- Glide图片加载库的使用
- 多校联赛第二场 1011 Keep On Movin
- 【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)
- kvm安装配置(一)
- 开源镜像站最新动态20150723
- 【无私分享:ASP.NET CORE 项目实战】目录索引
- Spark与Pandas中DataFrame的详细对比
- RPG游戏知识点