蓝桥杯 滑行

 题目https://www.lanqiao.cn/problems/2414/learning/?page=1&first_category_id=1&sort=students_count&tags=2023

import sys

sys.setrecursionlimit(1000000)

n, m = map(int, input().split(" "))
grid = [list(map(int, input().split())) for i in range(n)]
cache = [[0] * m] * n
cnt = 0


def dfs(grid, i, j):
    global cnt
    dir = [[1, 0], [-1, 0], [0, 1], [0, -1]]
    if not 0 <= i < len(grid) or not 0 <= j < len(grid[0]) or cache[i][j] == 1:
        return
    cache[i][j] = 1
    for k in range(4):
        xi = i + dir[k][0]
        yi = j + dir[k][1]
        if grid[xi][yi] < grid[i][j] and cache[xi][yi] == 0:
            cnt += 1
            dfs(grid, xi, yi)


maxcnt = 0
for i in range(n):
    for j in range(m):
        if cache[i][j] == 0:
            cnt = 0
            dfs(grid, i, j)
            maxcnt = (maxcnt, cnt)
print(maxcnt)

或者


# 此题为dfs或bfs,我们使用深度优先搜索
# 初始化递归深度
sys.setrecursionlimit(300000)

# 接收键盘输入
n, m = map(int, input().split())
heights = [list(map(int, input().split())) for _ in range(n)]

# 定义四个方法
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]

# 初始化距离矩阵
dist = [[0] * m for _ in range(n)]


# 定义dfs方法
def dfs(x, y):
    if dist[x][y] > 0:  # 表示该点测算guo
        return dist[x][y]
    dist[x][y] = 1  # 记忆化
    for i in range(4):
        nx, ny = x + dx[i], y + dy[i]
        if 0 <= nx < n and 0 <= ny < m and heights[nx][ny] < heights[x][y]:
            dist[x][y] = max(dist[x][y], dfs(nx, ny) + 1)  # 此步骤属于动态规划
    return dist[x][y]  # 最终返回该点距离


# 遍历素有位置,求出最大距离
ans = 0
for i in range(n):
    for j in range(m):
        ans = max(ans, dfs(i, j))

print(ans)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值