错车

来自计算思维百科
跳转至: 导航搜索
错车1.png

有两列火车,都是一个车头带着40节车厢。它们从相对的两个方向同时进入一个车站。这个车站很小,只有一条车道,还有一条不长的岔道,可以停一个车头和20节车厢。现在为了让两列火车都可以按原方向向前行驶,需要利用这个岔道错车。

问怎样做才能把两辆车错开?已知火车各节车厢之间可以打开,但必须有车头牵引 才能移动。

解决方案

设两列火车分别为甲和乙,甲车先停下来,分出20节车厢,然后车头带着20节车厢驶入岔道。然后把20节车厢放在岔道,甲车头回去取路上停的20节车厢,原地待命。此时,乙车带着自己的40节车厢驶过岔道,与岔道处放置的20节车厢连在一起,把60节车厢拉到路上,然后退回自己原来位置。这时,甲车带着20节车厢驶入岔道,让乙车带着60节车厢通过岔道,扔下甲车的20节厢,继续前行。然后甲车驶出岔道,倒退到被扔下的20节车厢的位置,带上它们被可以继续前进了。

运用的计算思维

车站相当于工作池,岔道相当于缓冲区。当有两个任务同时到达工作池,那么必然有一个任务需要到缓冲区进行等待,等其他任务做完就再进入工作池。问题中利用了岔道来实现两列车先后进入车站,运用的是调度的计算思维。