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

来源:互联网 发布:公开课推荐 知乎 编辑:程序博客网 时间:2024/06/15 16:27

题目:课程冲突

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

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

输入:

首先输入一个整数n(0<n<=100),表示小明选课总数。

之后输入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<num; i++){str[i] = in.nextLine();}String[] str1 = new String[num];String[] str2 = new String[num];for(int i=0; i<num; i++){String[] arr = str[i].split(" ");str1[i] = arr[0];str2[i] = arr[1];}List<List<String>> list = new ArrayList<List<String>>();for(int i=0; i<num; i++){if(str1[i] == null) continue;List<String> list1 = new ArrayList<String>();list1.add(str1[i]);for(int j=i+1; j<num; j++){if(str1[i].equals(str1[j])){str1[j] = null;list1.add(str2[i]);list1.add(str2[j]);}}list.add(list1);}List<List<String>> retlist = new ArrayList<List<String>>();for(int i=0; i<list.size(); i++){if(list.get(i).size() >= 3){retlist.add(list.get(i));}}// 无课程冲突if(retlist.size() == 0){System.out.println("YES");return;}// 按时间排序Collections.sort(retlist, new Comparator<List<String>>(){@Overridepublic int compare(List<String> o1, List<String> o2) {return (o1.get(0)).compareTo(o2.get(0));}});for(int i =0; i<retlist.size(); i++){for(int j=0; j<retlist.get(i).size()-1; j++){System.out.print(retlist.get(i).get(j) + " ");}System.out.println(retlist.get(i).get(retlist.get(i).size()-1));}}}



原创粉丝点击