//总是感觉生活很空虚,就只能写写博客看看书上上课这样子。想出去,去一个遥远的地方。
先来看一下题目:
有n户人家坐落在从西向东的一条街上。从街西头向东数,第i户的房子与街西头的距离是H[i]米,(1≤i≤n), H[1]< H[2] < H[3] … < H[n] ,假设街上没有邮局。现在,要在街上建一些邮局使得任一户人家到最近一个邮局的距离不超过1000米。请设计一个O(n)时间的算法以确定最少需要见的邮局收,并给出每个邮局到街西头的距离。
看到这道算法题,我有点羡慕这条街的人,寄信肯定超级方便,但也不禁有疑问,这个年代还要不要设置这么多邮局,因为不知道是不是还有很多人在写信,但是我特想写封信寄给她。蓦然想起来那首《从前慢》,"从前的日色变得慢/车,马,邮件都慢/一生只够爱一个人"。
正所谓一步一个脚印,既然要建邮局,还是那么多邮局,我们必然要从第一个邮局建起,邮局我们就假设为一个P数组,int型,里面存储邮局距离街最西头王大姐家菜地的距离。那么,第一个邮局便是P[1],回顾一下题目,我们需要确定最少的邮局数量,也就是说我们要让邮局的存在效用最大化,即每个邮局的覆盖范围最广,那么对P[1]来讲,必然是P[1]设立在H[1]+1000处时最为合适,附图来说: