1515:打印1到最大的N位数 @jobdu
题目1515:打印1到最大的N位数
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:625
解决:323
- 题目描述:
-
给定一个数字N,打印从1到最大的N位数。
- 输入:
-
每个输入文件仅包含一组测试样例。
对于每个测试案例,输入一个数字N(1<=N<=5)。
- 输出:
-
对应每个测试案例,依次打印从1到最大的N位数。
- 样例输入:
-
1
- 样例输出:
-
1
2
3
4
5
6
7
8
9
考察的就是大数据输入。
这种求全部组合的题目,一概可以用DFS来做。虽然本题Java中有自带BigInteger类,但还是按照出题人的意思来做吧。
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner; public class S12 { public static void main(String[] args) throws FileNotFoundException {
BufferedInputStream in = new BufferedInputStream(new FileInputStream("in.in"));
System.setIn(in);
Scanner cin = new Scanner(System.in); while (cin.hasNextInt()) {
int n = cin.nextInt();
print1ToMaxOfNDigits(n);
}
} private static void print1ToMaxOfNDigits(int n) {
if(n <= 0){
return;
} char[] number = new char[n];
rec(number, n, 0);
} private static void rec(char[] number, int length, int curDep){
if(curDep == length){
printNumber(number);
return;
} for(int i=0; i<10; i++){
number[curDep] = (char) (i+'0');
rec(number, length, curDep+1);
}
} private static void printNumber(char[] number){
boolean startingZero = true;
for(int i=0; i<number.length; i++){
if(number[i] != '0'){ // 过滤掉前导零
startingZero = false;
}
if(!startingZero){
System.out.print(number[i]);
}
}
if(!startingZero){
System.out.println();
} }
}
1515:打印1到最大的N位数 @jobdu的更多相关文章
- 剑指Offer - 九度1515 - 打印1到最大的N位数
剑指Offer - 九度1515 - 打印1到最大的N位数2013-11-30 01:11 题目描述: 给定一个数字N,打印从1到最大的N位数. 输入: 每个输入文件仅包含一组测试样例.对于每个测试案 ...
- 剑指Offer面试题:11.打印1到最大的n位数
一.题目:打印1到最大的n位数 题目:输入数字n,按顺序打印出从1最大的n位十进制数.比如输入3,则打印出1.2.3一直到最大的3位数即999. 二.不同的解法 2.1 不假思索的解法 最容易想到的办 ...
- 面试题12:打印1到最大的n位数
// 面试题12_打印1到最大的n位数.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> ...
- 《剑指offer》面试题12:打印1到最大的n位数
面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11< ...
- 打印1到最大的n位数
打印1到最大的n位数----java实现 题目:输入数字n,按顺序打印出从1到最大的n位十进制数.比如,输入3,则打印出1,2,3,.....,一直到最大的3位数即999. 分析: 1.这是一个典型的 ...
- 【面试题012】打印1到最大的n位数
[面试题012]打印1到最大的n位数 大数问题 字符串中的每一个字符都是‘0’到‘9’之间的某一个字符,用来表示数字中的一位,因为数字最大是n位的,因此我们需要一个长度为n+1的字符串,字符串的最后 ...
- 剑指offer编程题Java实现——面试题12打印1到最大的n位数
题目:打印1到最大的n位数 输入数字n,按顺序打印输出从1到最大的n位十进制数,比如输入3,打印从1到999. 这道题考察的地方是如何表示大数问题.由于n是任意大的数组,如果n太大的话n位数就超过了l ...
- 打印1到最大的n位数-Java
在练习剑指offer的时候,第12题打印1到最大的n位数的时候,想找个java版的,但大家要么用BigInteger做,要么给出其他的方法.我觉得要给就给最好的方法,下面是我自己参考C++代码写的ja ...
- 【Java】 剑指offer(16) 打印1到最大的n位数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入数字n,按顺序打印出从1最大的n位十进制数.比如输入3,则打印 ...
随机推荐
- yum安装软件时提示软件包没有签名
yum install [XXX] -y --nogpgcheck
- javascript-代码复用模式
代码复用模式 1)使用原型继承 函数对象中自身声明的方法和属性与prototype声名的对象有什么不同: 自身声明的方法和属性是静态的, 也就是说你在声明后,试图再去增 ...
- Angular2经典文章集锦
Angular Metadata 等基础知识 http://www.jianshu.com/p/aeb11061b82c Metadata告诉Angular如何处理一个类,只有我们将它通告给Angul ...
- 增加Android可用内存
In the development of TV applications, especially when dealing with images were more likely to feel ...
- [unity菜鸟] controller.SimpleMove(transform .forward); 无法移动
今天做demo时遇到一个问题:当使用角色控制器操作物体,用 controller.SimpleMove(transform .forward); 语句时物体不能移动,搜索请教了很久,最后终于googl ...
- Altium Designer学习:PCB只看当前层
1 Shift+S 这个快捷键能高亮当前层,并且使其他层变成灰色,见下图: 2 隐藏指定层 在图中右下角的地方,右键,会弹出一个选项条,选择Hide Layers,可以选 ...
- Delphi 中的DLL 封装和调用对象技术(刘艺,有截图)
Delphi 中的DLL 封装和调用对象技术本文刊登2003 年10 月份出版的Dr.Dobb's 软件研发第3 期刘 艺摘 要DLL 是一种应用最为广泛的动态链接技术但是由于在DLL 中封装和调用对 ...
- 《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现
原文:<ArcGIS Engine+C#实例开发教程>第四讲 状态栏信息的添加与实现 摘要:在上一讲中,我们完成了 MapControl 和PageLayoutControl两种视图的同步 ...
- 如何在Oracle11中配置st_shapelib
- ide远程调试
这篇写得好:http://qifuguang.me/2015/09/18/IntelliJ%E8%BF%9C%E7%A8%8B%E8%B0%83%E8%AF%95%E6%95%99%E7%A8%8B/