样例输入
1 | 3 201711170032 201711222352 |
样例输出
201711170700 get_up
201711171215 have_dinner
201711171815 have_dinner
201711181215 have_dinner
201711181815 have_dinner
201711182330 go_to_bed
201711191215 have_dinner
201711191815 have_dinner
201711192330 go_to_bed
201711200700 get_up
201711201215 have_dinner
201711201815 have_dinner
201711211215 have_dinner
201711211815 have_dinner
201711220700 get_up
201711221215 have_dinner
201711221815 have_dinner
分析:
解析输入的配置信息,将符号(星号、减号以及逗号)和英文缩写转换为对应的数字。
求解算法如下:
1 | 遍历从开始时间y1年到结束时间y2年中的所有年份y: |
1.1970年1月1日是星期四。
2.星号只能单独出现,减号和逗号可以配合出现。
3.英文缩写不区分大小写。英文缩写和数值可以混合使用。
4.包含系统运行的开始时间s,但不包含结束时间t,即[s,t)。
5.按照时间先后顺序输出。如果同一时刻有多条命令满足调度条件,则按照输入给出的顺序输出。
因此,哈希表必须是有序的。在C++中,可以使用map;Java中,可以使用TreeMap。
6.<minutes>
、<hours>
、<day of month>
、<month>
和<day of week>
中的值可能会重复出现,注意去重。
- C++版
1 |
|
- Java版
1 | import java.util.ArrayList; |