【蓝桥杯】2013年第四届蓝桥杯省赛真题-Java语言B(A)组-7-错误票据(历届试题 错误票据 )

【蓝桥杯】2013年第四届蓝桥杯省赛真题-Java语言B(A)组-7-错误票据(历届试题 错误票据 )_第1张图片
分析:

本题较难的地方在于对录入的字符串的接收,在接收完数字N之后,要用scanner.nextLine();将换行符“吃掉”。先用字符串来接收整行的数据,然后将其用空格分割开,用字符串数组来存储分割后的字符串。用Integer.parseInt()方法将数据由字符串转化为int型数。由于数字的个数是不确定的,我们可以用List集合来存储数据。

然后用Collections.sort()方法对List集合中的数据进行排序,数据有序之后,如果相邻两个数据之差等于2,则这两个数据是直接重号了。如果相邻两个数据之差等于0,则这两个数据是重号的。

Java代码实现:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		ArrayList list = new ArrayList<>();
		int N = scanner.nextInt();
		scanner.nextLine();
		for (int i = 0; i < N; i++) {
			String line = scanner.nextLine();
			String [] split = line.split(" ");
			for (int j = 0; j < split.length; j++) {
				list.add(Integer.parseInt(split[j]));
			}
		}
		
		
		Collections.sort(list);//排序
		
		int m=0;//断号
		int n=0;//重号
		for (int i = 1; i < list.size(); i++) {
			if (list.get(i) - list.get(i-1) == 2) {//判断断号
				m = list.get(i)-1;
			}
			
			if (list.get(i) - list.get(i-1) == 0) {//判断重号
				n = list.get(i);
			}
		}
		
		System.out.println(m + " " + n);
	}

}

你可能感兴趣的:(算法,蓝桥杯)