图论之腐烂橘子_BFS(python)

复制代码
from typing import List
from collections import deque
def orangesRotting(grid:List[List[int]])->int:
    t=0
    q=deque()  #队列,将腐烂橘子入队
    fresh=0  #统计新鲜橘子
    rows=len(grid)
    cols=len(grid[0])
    dirs=[(0,1),(0,-1),(1,0),(-1,0)]  #上下左右四个方向

    #先把腐烂橘子入队列,统计新鲜橘子数量
    for i in range(rows):
        for j in range(cols):
            if grid[i][j]==2:
                q.append((i,j))  #腐烂橘子坐标入队
            elif grid[i][j]==1:
                fresh+=1
                
    while q and fresh>0:
        q_len=len(q)
        for _ in range(q_len):
            r0,c0=q.popleft()  #取出腐烂橘子坐标(i,j)
            for k in dirs:  #判断它四个方向的橘子
                r=r0+k[0]
                c=c0+k[1]
                if r<0 or r>=rows or c<0 or c>=cols or grid[r][c]!=1:
                    continue
                grid[r][c]=2  #将新鲜橘子变坏
                q.append((r,c))  #腐烂橘子加入队列
                fresh-=1  #新鲜橘子减一
        t+=1
    return -1 if fresh else t

                
def main():
    grid= [[2,1,1],[1,1,0],[0,1,1]]  #答案输出4
    t=orangesRotting(grid)
    print(t)
    return

if __name__=="__main__":
    main()

思路:多源BFS搜索

1.使用队列,将腐烂橘子入队,每次取出一个腐烂橘子,就判断它的四个方向上的橘子是否是新鲜橘子,若是,则扩散腐烂,然后入队列,新鲜橘子数量减一。

2.如果最后还有新鲜橘子,则返回-1。

相关推荐
今天AI了吗7 小时前
【AI】一文讲清 RAG:从大模型局限到企业级知识库落地流程
前端·javascript·人工智能·python·深度学习·机器学习·easyui
“AI国潮设计-小江”7 小时前
《Python实战 | 用SDXL大模型生成“潮汕英歌舞”国潮IP头像,已申请外观专利,附Prompt思路!》
人工智能·python·prompt·aigc·scikit-learn
霸道流氓气质7 小时前
Spring AI提示词模板与动态变量替换
java·python·spring
民乐团扒谱机7 小时前
【超详细】PyQt6 实现 AU 风格波形图编辑器:多级缩放与采样点逐级渲染,附全过程代码
开发语言·python·编辑器·pyqt·audition·时域·频谱图
CTA量化套保7 小时前
先跑清楚小流程,再让量化功能变复杂
人工智能·python
Csvn7 小时前
🐍 Day 10: 依赖管理 — 从 requirements.txt 到 pyproject.toml
后端·python
2601_962294057 小时前
Python 操作 Word:如何查找、替换和批量修改文本
python·正则表达式·word·文档处理·查找替换
weixin_440730508 小时前
allure总结--解决版本不相容,没有trend(生成原始报告+复制history后在一起生成新报告)+jenkins集成
python·测试报告·allure
小柯南敲键盘8 小时前
跨马翻译:图片翻译软件批量处理,跨境电商视频字幕AI智能抠图
人工智能·python·音视频
BYSJMG8 小时前
计算机毕业设计选题推荐|【基于大数据的植被光谱特征与环境因子关联分析及可视化】Spark+K-Means
大数据·python·信息可视化·数据分析·spark·kmeans·课程设计