青蛙爬井

这道题目其实是后来临时加上去的比较简单的一道题目,典型的青蛙爬井问题,如果我这道题目不好理解,我们就当成青蛙爬井来做,有一口深V的井,一只青蛙白天爬上去v1米,夜晚休息掉下来v2米,问青蛙能几天爬出去.

也许有同学想当然,用v / (v1 – v2),这样其实忽略了一种情况,我们假设这一天刚开始的时候青蛙距离井口还有2米,它能白天爬2米,晚上落下来1米,那它完全可以在白天就爬出去,而不用再等到夜晚落下来, 如果按照上述的式子计算,结果便会错误,所以我们要先减去这特殊的最后一天,于是公式就变成了(V – v1/v1 – v2+ 1,当然还有v1 <=  v2的情况,那样青蛙永远爬不出去

这种数学方法的代码就不给出,同学们可以自己实现,下面给出具体的公式数学证明方法

青蛙爬井问题时,千万别老是想“第一次爬了多高,第二次爬了多高”,而要换一种思路,去想“第一次爬的最高处多高,第二次爬的最高处多高”,等等。因为能否爬出来,只与到达的最高高度有关,当最高高度等于或大于井的高度时就爬出井了; 设井深C米,每次向上爬A米,接着向下滑B米,再向上爬,再向下滑,问几次爬出井?

  根据上诉思路:第一次最高爬到A米处;由于向下滑B米,所以第二次最高爬到A-B+A米处,即A+(A –B)米处;同理第三次最高爬到A+(A –B)+(A –B)米处;以此类推,第N次最高爬到A+(A –B)×(N-1)米处;

当A+(A –B)×(N-1)≥C(井深)时,就爬出来了;

 所以 N=C- A)/(A-B+1, 化简后就是 ( C - B ) / (A - B).

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值