编程题(电梯)
Click to Github
听华一大大说可以用回溯算法,熟练运用搜索引擎的我就百度了一下,琢磨了很多天以为自己会了,真的看到题目还是一脸懵逼(#`-_ゝ-),提交的代码并没有用到回溯(因为不会),而且只能处理几组非常特殊的数据,但是担心截止时间前改不完就先提交了。
我的想法
-将五组数据按照请求时间进行排序
-根据时间顺序载客并作出选择
1.送完电梯内的乘客再去载其他发出请求的乘客
2.在送该乘客的过程中接其他乘客
(1)接的乘客恰好目的地与电梯上的乘客相同,即“顺风车”
(2)接的乘客目的地与电梯上的乘客相反☚其实这种情况乘客上不上电梯都是一样的等待时间,可以不用考虑的( ̄▽ ̄)"
然而只是想法
碍于自己相当贫瘠的编程知识和十分薄弱的编程实现能力,用递归写出了很多莫名其妙的问题☚其实就是乱写不知道写了什么,我屈服了,还是先用我熟练掌握的这一点知识写吧……因此贴出来的代码其实没有什么参考价值(;′⌒`),十分的冗长而且只有特别的数据能得到最优(其实就是进行了计算,很难说是否正确...( _ _)ノ|)
第2次更新
写了一晚上还是改不清楚,原本能处理的数据也出问题了//那我为什么更新呢_〆(´Д` )
因为写着写着发现还有更多情况☟
- 还是按照时间顺序载客
- 顺路出现了两种情况☞(1)接到第k个目标乘客前,第k+1个乘客恰好发出请求,并且目的地与第k个相同;(2)接到第k个乘客后,第k+1个乘客恰好发出请求,且目标相同;
- 后来发现☞可以不止一个人顺路,比如五个请求都是零时刻发出,并且正好目标楼层都相同( ̄▽ ̄)"
直觉告诉我判断的几个节点是这样的☞收到第k个请求时,
第一个判断:接到第k个乘客前是否可以“顺路”接其他乘客,如果是,可以选择接,或者不接;
第二个判断:接到第k个乘客后是否可以“顺路”接其他乘客,如果是,可以选择接,或者不接。
倘若第k+1个乘客顺路,可以向下搜索第k+2个,并进行判断
//这么一写,好像可以用回溯了ヾ(≧ ▽ ≦)ゝ,又出现很多if语句了( ̄▽ ̄)"//不说了我去学习了,这不是时间截止的自暴自弃(°ー°〃)Pintia小作业