小兔子搬萝卜

小兔子搬萝卜——一道面试题

2022.6.07参加了金山世游的一个线下面试,笔试的时候有这题,感觉蛮难的,当时反正没做出来吧。
后来我看看百度,嗯,这是一道很早的题了。咱先不管这是不是一道原创的题,要关注于自己没有把它做出来的结果。嗯,这是一道让自己摸不着头脑的题。
这道题是这样的哦,就是小兔子在离家50米处有初始100根萝卜,他现在要萝卜搬回家,具体的限制有,它这家伙每走一米就要吃一根萝卜,一次搬运最大数为50根。

**当时做这题的想法:**它开始就搬50根萝卜,往家走。走到家就没了呀,从家里回来再搬也还是没有啊,怎么回事呢?
反正,我没继续想,继续做下一题。

**现在想法:**它身上有萝卜时,才走一步。(我当时想,它要是没有萝卜是不是也可以走下去呢,看到了网上解答,发现我的想法是错的,它身上有萝卜才走)。
假如按我的想法来做,有没有办法呢?
它每走一步就会消耗萝卜,它每走一步就会消耗身上的萝卜,它没走一步不会消耗不在它身上的萝卜。
我可以从开始直接搬50根萝卜到25米处,再回去再搬50根到25处,然后再一起搬到0米处,这个时候,萝卜数就是25根。
如果搬到24米处呢?最后就是24根。一直这样算,一起在1米处搬,最后只剩1根。
哦,所以是什么呢?
这个是一个损耗问题,可是难理解的点在于它可以把搬的萝卜再次整合到一起,再次以一个新的整体来损耗。你每次搬的萝卜都有机会和另一堆形成下一个整体来再次经历损耗。
我们的策略就是不能搬一次就全部损失掉,要和其他的搬运相结合。啊,这题可真是绕啊。

这让我想到了,线性规划呢,兔子搬运的整体萝卜都是一个单调下降的直线,到50米处为零,但是你中间停止了呢,你的整体值还是可以大于零的。这个时候你再回去搬运东西,再次在这个地方停下来,你的递减直线斜率没变,但是截距变大了,你再次递减到50米处,你的整体值还是大于零的。

这题消耗的到底是什么?如果它搬运没限制的话,早就可以把100根萝卜全部搬到家里剩50根。
可是就是有了限制,它要在限制条件下找到最优方案。

网上大部分的解答都是这个意思。你在50米处搬50根萝卜,最后还是没有。但是你搬50根萝卜的起点提前了,就可以到起点处有最多的萝卜了。

消耗:

怎么说呢,就是

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值