首页 > 其他分享 >3.滑行。

3.滑行。

时间:2024-03-30 14:58:05浏览次数:15  
标签:位置 高度 flag 小蓝 场地 滑行

3.滑行 - 蓝桥云课 (lanqiao.cn)
问题描述
小蓝准备在一个空旷的场地里面滑行,这个场地的高度不一小蓝用一个n行m列的矩阵来表示场地,矩阵中的数值表示场地的高度
如果小蓝在某个位置,而他上、下、左、右中有一个位置的高度(严格)低于当前的高度,小蓝就可以滑过去,滑动距离为o
如果小蓝在某个位置,而他上、下、左、右中所有位置的高度都大于等于当前的高度,小蓝的滑行就结束了。
小蓝不能滑出矩阵所表示的场地
小蓝可以任意选择一个位置开始滑行,请问小蓝最多能滑行多远距离。
输入格式
输入第一行包含两个整数 n,m,用一个空格分隔
接下来n行,每行包含m个整数,相邻整数之间用一个空格分隔,依次表示每个位置的高度
输出格式
输出一行包含一个整数,表示答案

import os
import sys

# 请在此输入您的代码
n,m=map(int,input().split())
changdi=[]
for i in range(n):
  column=list(map(int,input().split()))
  changdi.append(column)

direction=[(1,0),(-1,0),(0,1),(0,-1)]
flag=[[-1]*m for _ in range(n)] #记录每个起点开始所能到达的最远距离

def dfs(x,y):  #x行坐标,y列坐标
  if flag[x][y] !=-1:  #已经搜索过这个起点
    return flag[x][y]
  ans=1  #最远距离
  for d in direction:
    x_next=x+d[0]
    y_next=y+d[1]
    if 0<=x_next<n and 0<=y_next<m and changdi[x_next][y_next] < changdi[x][y]:
      ans=max(dfs(x_next,y_next)+1,ans)
  flag[x][y]=ans
  return ans

res=0
for i in range(n):
  for j in range(m):
    res=max(dfs(i,j),res)

print(res)

标签:位置,高度,flag,小蓝,场地,滑行
From: https://blog.csdn.net/weixin_72050316/article/details/137171763

相关文章