农场里有一群牛,每头牛都有一个编号。农场主将牛群按照二维矩阵的形式排列,其中矩阵中的每个元素表示牛的高度。一开始你在最左上角的牛(0,0),你希望到达最右下角的牛(rows-1, columns-1)。你每次可以往上、下、左、右四个方向之一移动,你想要找到耗费体力最小的一条路径。 一条路径耗费的体力值是路径上相邻牛之间高度差绝对值的最大值决定的。 请你返回从左上角走到右下角的最小体力消耗值。

区块链毕设网qklbishe.com为您提供问题的解答

农场里有一群牛,每头牛都有一个编号。农场主将牛群按照二维矩阵的形式排列,其中矩阵中的每个元素表示牛的高度。一开始你在最左上角的牛(0,0),你希望到达最右下角的牛(rows-1, columns-1)。你每次可以往上、下、左、右四个方向之一移动,你想要找到耗费体力最小的一条路径。

一条路径耗费的体力值是路径上相邻牛之间高度差绝对值的最大值决定的。

请你返回从左上角走到右下角的最小体力消耗值。

# Solution.py开始

import heapq

class Solution:
    def minimumEffortPath(self, matrix):
        # 如果矩阵为空或者矩阵的第一行为空,则返回0
        if not matrix or not matrix[0]:
            return 0
        
        # 获取矩阵的行数和列数
        rows, cols = len(matrix), len(matrix[0])
        # 定义四个方向:右、左、下、上
        directions = [(0, 1), (0, -1), (1, 0), (-1, 0)]
        # 初始化堆,元素为 (effort, row, col),表示代价、行、列
        heap = [(0, 0, 0)]
        # 记录已访问过的位置
        visited = set([(0, 0)])
        
        while heap:
            # 弹出堆中的最小元素
            effort, row, col = heapq.heappop(heap)
            
            # 如果到达终点,返回当前代价
            if row == rows – 1 and col == cols – 1:
                return effort
            
            # 遍历四个方向
            for dx, dy in directions:
                new_row, new_col = row + dx, col + dy
                # 判断新位置是否合法且未访问过
                if 0 <= new_row < rows and 0 <= new_col < cols and (new_row, new_col) not in visited:
                    # 计算新位置的代价
                    new_effort = max(effort, abs(matrix[row][col] – matrix[new_row][new_col]))
                    # 将新位置的信息加入堆和已访问集合
                    heapq.heappush(heap, (new_effort, new_row, new_col))
                    visited.add((new_row, new_col))
        
        return -1  # 如果没有找到路径(对于这个问题来说不应该发生)

# Solution.py结束

代码在测试[[1,2,2],[3,8,2],[5,3,5]]有误  输出3   可以提交通过

13:54

以上就是关于问题农场里有一群牛,每头牛都有一个编号。农场主将牛群按照二维矩阵的形式排列,其中矩阵中的每个元素表示牛的高度。一开始你在最左上角的牛(0,0),你希望到达最右下角的牛(rows-1, columns-1)。你每次可以往上、下、左、右四个方向之一移动,你想要找到耗费体力最小的一条路径。 一条路径耗费的体力值是路径上相邻牛之间高度差绝对值的最大值决定的。 请你返回从左上角走到右下角的最小体力消耗值。的答案

欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。

区块链NFT链游项目方科学家脚本开发培训

承接区块链项目定制开发

微信:btc9767

QQ :1330797917

TELEGRAM: BTCOK9

承接区块链项目定制开发


qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 农场里有一群牛,每头牛都有一个编号。农场主将牛群按照二维矩阵的形式排列,其中矩阵中的每个元素表示牛的高度。一开始你在最左上角的牛(0,0),你希望到达最右下角的牛(rows-1, columns-1)。你每次可以往上、下、左、右四个方向之一移动,你想要找到耗费体力最小的一条路径。 一条路径耗费的体力值是路径上相邻牛之间高度差绝对值的最大值决定的。 请你返回从左上角走到右下角的最小体力消耗值。