1515:打印1到最大的N位数 @jobdu
2024-10-09 14:33:49
题目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();
} }
}
最新文章
- Freeswitch 添加可转码的G729编码
- 学校系统快速js代码
- [Asp.net MVC]Asp.net MVC5系列——从控制器访问模型中的数据
- node.js整理 02文件操作-常用API
- 【随笔】ssh登录时如何直接在参数中加入登录密码
- Android控件之ToggleButton(多状态按钮)
- Python中strip()函数
- [置顶] ios 网页中图片点击放大效果demo
- Part 53 to 55 Talking about Reflection in C#
- js判断是否在iframe中
- Android豆瓣图书查询Demo
- (转)IIS5.1的安装配置并发布ASP.NET网站
- Swift主题色顶级解决方案一
- Spring @Aspect切面参数传递
- oracle练习--@余生请指教多
- 20145237 《Java程序设计》第九周学习总结
- 【BZOJ5289】[HNOI2018]排列(贪心)
- Linux命令之top、ulimit、free
- Spring中Bean的五个作用域
- MATLAB 画柱状图(/直方图)修改横坐标名称并使其横着显示