“司空见惯的事物,也未必如它表面般简单。”
我们假设一个场景,有一个校园紧急服务中心,可以接听全校打进来的紧急
求助电话。该紧急服务中心配有若干个接线员,以应对同时打进来的电话。有一台电话转接器能够实现以下功能:对打进来的电话进行一次查询,如果查询到有空闲的接线员,则将这通电话转接给某个空闲接线员,否则会返回一个信号,告诉打进来的电话暂时忙线。这些电话只能由固定在校园里的一些校方提供的设备拨出,这意味着手机不能直接联系校园紧急服务中心,同时也意味着校方可以轻易对拨打设备进行改造。
一般情况下,多个接线员足够处理多通电话,但某些高压时刻,比如食堂食品安全事故导致大规模肠胃疾病爆发,同时打进紧急服务中心的电话就有可能多于接线员的数量。我们假设电话路线数量足够多,在面对大量学生同时拨打时也不至于物理上崩溃。现在我们认为直接告诉拨打者,现在电话打不通是不负责的行为,并希望改进功能,让拨打者不需要挂掉电话,而只需要拿着电话等,直到有空闲的接线员,则自动接通。
如果没有限制的话,解决的办法就非常多了。因此,下面我们要面对两种不同的额外情况,请
思考其中对策。为了方便本题以单选题形式给出,请回答两个答案的序号的差的绝对值。举个例子:你认为答案是1和2,则选择|1-2|=|-1|=1。两个答案不排除序号相同。
情况一:
空间存储告急!我们不能使用额外存储除了现有的可能产生的数据之外的任何数据。
情况二:拨打设备维护者跑路!现在无法对拨打设备进行改造。所幸,接收电话的设备维护者还在。
答案1:在拨打设备处增加功能:如果接收到忙线信号,则在一秒后重新尝试拨打电话。
答案2:在接受设备处增加一个记录装置,记下打不进来的电话,当某个接线员结束当前通话时,从记录装置中接通最早打进来的电话给这个接线员。
答案3:在拨打设备处增加功能:可以和所有拨打设备通信并发送询问数据,以及面对询问返回自己是否正在通话。如果询问发现正在通话的拨打设备小于接线员数量(假设接线员数量随时公开)则拨打电话,否则等待一秒后重复操作。
答案4:在接受设备处加以改进,当忙线时有新的电话打进,则直接挂断最早打进来的电话,并将新打入的电话接给对应的接线员。