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();

		}

		

	}

}


 

 

你可能感兴趣的:(job)