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

Python实现腐烂的橘子BFS算法时while内for循环触发无限循环的原因?

问题原因

你触发无限循环的核心原因是标记橘子腐烂的操作写错了运算符:
你写的是grid[next_row][next_col]==2,这是比较判断语句,不会修改grid里的数值,实际需要的是赋值语句grid[next_row][next_col]=2。

为什么会无限循环

  • 你判断到相邻格子是新鲜橘子(值为1)之后,没有真的把它修改为腐烂状态(值为2),只是对数值做了一次无意义的相等判断
  • 后续其他腐烂橘子遍历到这个坐标的时候,它的值还是1,会被反复判定为新鲜橘子,不断加入队列,导致队列永远不会为空,触发无限循环
  • 哪怕你每次都给fresh_oranges减1,也只是让这个变量变成负数,完全不会影响队列新增元素的逻辑

修正后的代码片段

if grid[next_row][next_col]==1:
    # 把双等号改成单等号,执行赋值操作
    grid[next_row][next_col] = 2
    fresh_oranges-=1
    queue.append([next_row,next_col])

修改后运行对应测试用例即可得到正确结果4。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:36:01