寒假作业2 电梯问题

Posted seast90

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寒假作业2 电梯问题相关的知识,希望对你有一定的参考价值。

电梯升降

github: https://github.com/Seast90/Elevator

方案 代码行数 bug数
A 预计200+ 预计20+个
B 120 20个

优化过程

 模拟现实的电梯写的代码。
  本来想写A方案的贪心思路,就是仅靠当前数据进行权值计算来判断电梯接下来应该如何运作,但是由于思路不完整并且觉得仅仅凭借权值判断会出现有些情况无法最优的情形,所以思路A只写了一个模板,然后去写了思路B的代码,就是在当前时间暴力dfs每种电梯可行的情况中最优的情况,用字符串存储电梯的运作,然后读取最优运作的字符串进行电梯的调度。
  优化主要在dfs的思路上的优化和代码的debug,运行过程中我发现我的dfs有部分可以剪枝,所以对代码进行了大刀阔斧的整改,在出的几个测试数据都没有bug的情况下我提交了代码。
  对于贪心的权值判断我有个大概的框架,但是并不能保证所有情况下都能最优,所以还没决定要如何写贪心策略的代码。

测试数据

在一层楼 停下多次 载客:
技术分享图片

来回载客的复杂情况:
技术分享图片

选取最优策略的判断:
技术分享图片

复杂情况选取策略:
技术分享图片

电梯中途掉头的情况:
技术分享图片

电梯不掉头等待乘客的情况:
技术分享图片

总体来说满足我的预期并且在图二情况中跑赢了stolf犇犇的贪心电梯,也从侧面证实了我对贪心策略无法做到百分百最优策略的判断(但是其他五种情况都一样 stolf犇犇太强了%%%)

收获

一开始以为这题并不难 所以水了几天只思考没实践,后来开始实践的时候才发现自己考虑的还是太少了,还是有些部分没有考虑清楚,
其中包括对贪心策略的判断,一开始觉得这个策略不会很难想,后来发现很难将这个策略做到极致,总会有些小情况是没办法完美解决的,
所以改写了暴力的代码,并且发现暴力的代码也是一样的不好写= =。debug了几个小时的终于把问题解决清楚,总的来说对于B代码还是比较满意的,
但是对于A代码没写出来还是有些不满意,同时也得多留心生活中的一些小事情,说不定之后就会遇到同样的代码题(

Pintia 编程题

技术分享图片










以上是关于寒假作业2 电梯问题的主要内容,如果未能解决你的问题,请参考以下文章

寒假作业3

寒假第二次作业 与电梯有关的代码问题

寒假作业2_电梯

寒假作业2-编程题

寒假作业2

2017面向对象程序设计寒假作业2