【科大讯飞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));}}}
阅读全文
0 0
- 【科大讯飞2017年笔试题】课程冲突
- 科大讯飞编程题 2018 课程冲突
- sql笔试题(求课程难度)
- 科大讯飞2017笔试题
- 2017年课程总结
- 【笔试真题】2017年58春招笔试题
- 2015年浙江省公务员考试笔试培训红领决胜课程3月12日开课!
- 《课程格子》的一个笔试题目
- 科大讯飞 2017在线笔试编程题
- 2017科大讯飞现场笔试
- 科大讯飞笔试题
- 2017年网易内推笔试题
- 2017年完美世界一道笔试题
- 2017年Ali秋招笔试题
- 【2017年】阿里巴巴算法笔试第二题
- 2017年滴滴秋招内推笔试编程题
- 一道2017年百度笔试编程题
- 百度2017年计算机视觉笔试题
- Google系 900个实用图标的Axure元件库助你原型无忧
- 打印机状态码解析
- SSM下添加javamelody监控。以及遇到的部分问题的解决
- resin安全配置 只允许指定ip访问resin-admin 拒绝某些ip访问webapp
- c语言char类型的相关知识点
- 【科大讯飞2017年笔试题】课程冲突
- 显示所有进程号
- Codeforces Round #434 (Div. 2, based on Technocup 2018 Elimination Round 1) D
- ActiveX,NPAPI,COM总结
- new Option()函数的作用
- 对Excel工作表Sheet1快速隐藏行和列无需手动一个个选择
- C中不安全的函数以解决办法汇总
- Oracle建立表空间和用户
- Ocacle函数,三层嵌套分页