【科大讯飞2017年笔试题】课程冲突

题目:课程冲突

小明是一名学生,又到了学校的选课时间,他想选一些课程学习,已知课程开课时间都在周一到周五之内,早上4节课,晚上2节课。

小明担心选课时间上有所冲突,所以他希望可以对课程时间进行检查。

输入:

首先输入一个整数n(0

之后输入n行选课信息,每行选课信息有2个数字,前一位用0到4表示周一到周五,后一位用0到9表示从早到晚顺序第几讲课,如12表示礼拜2第3讲课。01表示礼拜

1第2讲课。

每行第二个数字表示课程代号,如:204521。课程代码为6位数字。输入课程代码为不重复。

输出:

如果没有冲突课程,输出YES。

如果有冲突课程,也就是同一时间多于一节课,输出所有冲突的课程。输出有多行,如果多个不同的上课时间都有课程冲突,按照周一到周五,早上到晚上时间先后,

按行输出冲突信息。在同一行内,先输出冲突时间,之后输出这一时间的所有课程,输出课程的顺序为输入中这些课程出现的顺序,课程之间以空格分隔,不要在行末输出

多余的空格。

样例输入:

5

01 204521

23 204523

22 204526

01 204528

22 204527

样例输出:

01 204521 204528

22 204526 204527


题目很长,我写的代码可能空间复杂度较高,我没在OJ上跑过,不知道能不能跑过。但是思路没有问题,就当自己练习练习。

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

public class ConflictOfCourse {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		int num = in.nextInt();
		in.nextLine();
		String[] str = new String[num];
		for(int i=0; i> list = new ArrayList>();
		
		
		for(int i=0; i list1 = new ArrayList();
			list1.add(str1[i]);
			for(int j=i+1; j> retlist = new ArrayList>();
		for(int i=0; i= 3){
				retlist.add(list.get(i));
			}
		}
		// 无课程冲突
		if(retlist.size() == 0){
			System.out.println("YES");
			return;
		}
		
		// 按时间排序
		Collections.sort(retlist, new Comparator>(){
			@Override
			public int compare(List o1, List o2) {
				return (o1.get(0)).compareTo(o2.get(0));
			}
		});
		
		for(int i =0; i

【科大讯飞2017年笔试题】课程冲突_第1张图片


你可能感兴趣的:(Java基础,笔试面试题)