You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正蜗牛爬井问题代码,获取正确的逃脱天数?

解决蜗牛爬井问题的代码修正

嘿,这个坑我之前踩过!你的代码结果不对,核心原因就是没考虑最后一天蜗牛爬出井口后就不会再滑落了——现在的逻辑把每一天都当成“爬上去又滑下来”,但实际上最后一天白天爬完直接就逃出井了,根本不会有夜间滑落的过程。

错误原因分析

你的代码里,每天都是让蜗牛先爬再滑,净前进30-20=10厘米,这样算下来125/10=12.5,取整得到13天。但实际情况是:

  • 第10天结束时,蜗牛的位置是10*10=100厘米
  • 第11天白天,蜗牛直接爬30厘米,到达100+30=130厘米,已经超过了125厘米的井深,直接逃出去了,不用再滑落

修正后的代码方案一(直观逻辑)

我们可以调整顺序:先让蜗牛完成白天的爬行,立刻检查是否逃出,没逃出再处理夜间滑落:

well_height = 125
daily_distance = 30
nightly_distance = 20
snail_position = 0
days = 0

while True:
    days += 1
    # 先完成白天的爬行
    snail_position += daily_distance
    # 检查是否已经爬出井口
    if snail_position >= well_height:
        break
    # 没爬出的话,夜间滑落
    snail_position -= nightly_distance

print(days)

修正后的代码方案二(数学优化)

另一种思路是先计算蜗牛需要多少天才能爬到“白天一爬就能出去”的位置,再加最后一天:

well_height = 125
daily_distance = 30
nightly_distance = 20
snail_position = 0
days = 0

# 循环条件:当前位置加上白天爬行距离还不够逃出,说明当天结束后还会滑落
while snail_position + daily_distance < well_height:
    days += 1
    snail_position += daily_distance - nightly_distance

# 最后一天直接爬出去
days += 1

print(days)

两种方案运行后都会得到正确结果11天,核心都是把最后一天的特殊情况单独处理,不再套用“爬滑循环”的逻辑。

内容的提问来源于stack exchange,提问作者FFF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 09:52:40