* 原始文章地址可能暂时无法访问,仅展示文章的摘要信息
「一道无趣的面试编程题」的摘要信息
最近经济大环境依旧没能从疫情中走出来,身边有不少小伙伴被裁员或者是公司倒闭失业。好友群里讨论最多的话题就是面试,自然少不了讨论面试题。昨天一位相识多年的好友向我求助,他当时正好在面试,需要现场编程。 当时刚好不忙就看了一下题目,感觉很无趣,但还是耐着性子文字给他讲了讲,顺带着画了张简图,可是他还是没懂。原题如下: 一个城市可以近似看成 n * m 的网格图,A 公司有 k 个维修点,每个维修点有固定的坐标,城市里面有 h 个客户需要修理手机,客户有固定的坐标。维修员在地图上只能上下左右走,不能斜着走,每走一个格子需要 2 块钱的花费。每个维修点拥有无数个员工,每个员工可以被派去为一个客户服务。城市里面有 z 个地方在修理管道,这些地方是不能走的。可能有一些客户是被隔离的(上下左右都在修管道),这里是不需要派员工去修理手机了。A 公司为了节省财力,想找到最小的花费。 输入: 第一行给出两个正整数 n, m (0 < n < 1000, 0 < m < 1000)。 第二行给出 k(0 < k < 20)以及 k 个维修点的坐标。 第三行给出 z(0 < z < 100)以及 z 个坐标。 第四行给出 h(O < h < 100)以及 h 个坐标。 保证客户,维修点以及修理管道都在 n * m 的地图里面。 输出:最小的花费。 样例 输入样例 100 100 411223344 100 3 99 99 88 88 7777 输出样例 1008 这道题乍一看,看起来很唬人字很多,又是还有拦路虎,要找最短路径啥的,但其实是一道阅读理解题。一般现场编程面试,主要看你现场的反应和理解力,算法或者数据结构的东西,反而涉及不会太多。 这也使得这道题在弄懂原理后相当无趣,但考虑我这朋友确实经验尚浅,所以我还是给他继续讲下去,顺带着给了代码实现。这篇博客便是当时内容的摘录整理。 做任何算法...