作业二

思路与流程图

C语言:

假设电梯停在第 i 层楼,我们计算出所有乘客总共爬楼梯的层数(与耗时数相当)是s。如果有down个乘客想去的楼层在第 i 层之下,有fit个乘客正好想去的楼层是第 i 层,有up个乘客想去的楼层在第 i 层之上。这个时候,重点来了:如果电梯改停在i-1层,所有目的地在第i - 1层以下的乘客可以少爬1层,总共少爬N1层,所有在i层及以上的乘客要多爬一层,总共多爬now+up层,这时总共需要爬s-down+fit+up。

  反之,如果电梯在i+1层停所有目的地在第 i 层以上的乘客可以少爬1层,总共少爬up层,所有在 i 层及以下的乘客要多爬一层,总共多爬fit+down层,这时总共需要爬s+down+fit-up层。

  可见,当down> fit+up 时,电梯在第i-1层楼停更好;当down+fit < up 时,电梯在i+1层停更好。其他情况在第i层更好。

  如此一来,问题的解法就出来了,从第一层开始考察,计算各位乘客走的楼层的数目(与耗时数相当),然后根据down,fit,up之间的关系进行调度,直到找到下一个最佳目标楼层;重复上述检索操作,直到全部送完。

C++流程图

posted @ 2018-05-06 21:38  索伦  阅读(191)  评论(1编辑  收藏  举报