【初级擂台】星级用户请不要参与
闻缺陷则喜何志丹 《深入浅出Visual c++》书籍作者 博客专家认证 2003-07-26 08:45:01 一个矩形机场的平面图可以分为M×N个同样大小的方块(M表示行,N表示列,M<=10,N<=10),每个方块可能是以下四种设施之一:
起跑线 ,用'**'表示;
跑道, 用'&&'表示;
建筑物, 用'##'表示;
停机场,依次编号为01,02,...99
例如,图一是某个机场(4×5)的平面图.
01
&&
**
&&
02
03
04
&&
05
06
07
08
&&
##
09
10
11
&&
&&
12
图 一
飞机在机场起落、移动和停泊的规则有:
飞机只能在起跑线上起落。若机场有多个起跑线,则飞机可在任一起跑线上起落。
飞机在起跑线上降落后,要寻找一个空的停机场,并移动到该处停泊,直至其离开机场为止,期间飞机不得离开该停机场。飞机起飞时,要能从该停机场移动到某个起跑线。
飞机只能在机场内的起跑线、跑道和空的停机场上移动,不能经过建筑物或已有飞机停泊的停机场。
由于飞机在机场移动所花的时间很短,可忽略不计,因此可假设在某个飞机移动时,其它所有飞机都不动,也无其他飞机起飞或降落。
飞机在机场的任一处最多有四种可能的移动方向,如图二所示。
图 二
每个停机场在同一时间只能停泊一架飞机。
每天早晨5:00机场开放,晚22:00机场关闭,机场开放前和关闭后均无飞机停泊。
已知每天出入机场的飞机共P架,我们有一张这P架飞机的日航班表,例如:
飞机编号 到达时间 起飞时间
01 05:00 13:00
05 08:00 16:00
13 07:00 21:00
04 09:00 09:30
39 12:50 13:50
为了使这P架飞机能顺利出入机场,需要寻找一种满足要求的飞机停泊调度方案(即:每架飞机降落后均能移动到某个空的停机场,起飞均能从停机场移动到某个起跑线)。
注意: 航班表中任意两个时间均不相同。
任务一 (20分)
对于图一所示的机场,根据给定的航班表,判断所给的调度方案是否满足要求(P<=20)。
[输入格式]
从键盘读入存放航班表的文件的文件名和存放调度方案的文件的文件名,每项占一行。
航班表在文件中的格式为:第1行行首为飞机总架数P,第2行至第P+1行,每行为一架飞机的信息,格式为:
飞机编号((到达时间((起飞时间 ('('表示一个空格符,以下同)
飞机编号可能为01,02,...50。
时间采用24小时制表示,即“时:分”,
时05,06,...,22 , 分:00,01,...,59 )
调度方案在文件中的格式为:从第1行起,每一行为一架飞机的调度结果,格式为:飞机号((所分配的停机场号。
[输出格式]
若调度方案满足要求,则在屏幕上输出“RIGHT!”信息,否则输出“WRONG!”信息。
[输入输出举例]
task1.lst task1.way
5
11((06:00((12:00 11((07
02((07:30((07:50 02((10
33((12:10((21:00 33((05
24((15:00((16:00 24((08
05((06:20((21:50 05((11
输 入 输 出
task1.lst WRONG!
task1.way