R001 记忆化搜索 ABCPATH - SPOJ 有方向的搜索

例题:

题意:

给你一个二维字母网格图,求从字母 A 开始的最长连续字母路径长度,枚举方向包括水平、垂直和对角线。

特点:

  1. DFS参数:从根节点向周围扩散,取子节点返回的最大值作为当前的返回值。
  2. 搜索条件 :有明显的方向,比如这里 A -> B -> C -> D ··· ,可以不使用 vised 数组。可以理解为网格图上进行拓扑排序求最长路
  3. 关键优化 :存在重叠子问题需要记忆化

具体代码为

python 复制代码
memo = [[0] * m for _ in range(n)]  # 记忆化数组,标记这个位置已经更新
def dfs(i, j):
    if memo[i][j] != 0:
        return memo[i][j]
    res = 1
    for dx, dy in dirr:
        a, b = i + dx, j + dy
        if 0 <= a < n and 0 <= b < m:
            if ord(g[a][b]) == ord(g[i][j]) + 1:  # 保持有方向的搜索
                res = Max(res, 1 + dfs(a, b))  # 对子节点的贡献取max
    memo[i][j] = res
    return res

类似题目:

相关推荐
whyTeaFo4 小时前
MIT 6.1810: Lab traps: traps
笔记
小陈phd4 小时前
多模态大模型学习笔记(四十八)——从自然语言到 SQL:大模型时代结构化数据查询的技术革命与落地实践
笔记·sql·学习
元气少女小圆丶5 小时前
SenseGlove Nova 2+Unity开发笔记4
笔记·unity·游戏引擎
ZK_H5 小时前
MFC程序开发自学笔记其一——windows应用程序与c++基础
c++·笔记·mfc
GLDbalala6 小时前
GPU PRO 5 - 2.6 Wire Antialiasing 笔记
笔记
梦077 小时前
学习笔记-ClaudeCode快速安装配置上手
笔记·学习
江华森7 小时前
TDengine 时序数据库深度学习笔记
笔记·时序数据库·tdengine
路人蛃7 小时前
【深入理解计算机系统】第二章第一节(信息存储)笔记
服务器·网络·笔记·计算机网络·系统架构
imDwAaY7 小时前
机器学习入门:从感知机到逻辑回归,理解线性分类器与Softmax CS188 Note20 学习笔记
人工智能·笔记·python·学习·机器学习·逻辑回归
chushiyunen7 小时前
json-rpc笔记
笔记·rpc·json