【算法设计与分析】贪心策略——最佳邮局设置问题

//总是感觉生活很空虚,就只能写写博客看看书上上课这样子。想出去,去一个遥远的地方。

先来看一下题目:

有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处时最为合适,附图来说:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值