题目描述 你准备参加一场野外登山活动。给你一个n x n(3 ≤ n ≤ 10)的平面地图maps,地图中每个格子里的数值表示高度(高度均为非负数)。 你的起始点是maps最左上角的小格子,终点是maps最右下角的小格子。 在不超出地图maps范围的情况下,每次你可以选择往右或往下移动,并且只能移动一个小格。 请你找到耗费体力最小的一条路径,计算出从左上角走到右下角的最小体力消耗值。 (体力消耗值是指走完一条路径上所有相邻格子间的高度差之和。) 输入描述 第一行,一个整数n 接下来n行,每行n个整数,整数之间用空格隔开,表示地图maps中每个格子对应的高度 输出描述 共一行,一个整数,表示最小体力消耗值
以下是使用 Python 实现的解决方案: ```python # 读取输入 n = int(input()) maps = [] for _ in range(n): # 将每行输入按空格分割并转换为整数列表 row = list(map(int, input().split())) maps.append(row) # 创建一个二维数组 dp 来存储到达每个格子的最小体力消耗值 dp = [[0] * n for _ in range(n)] # 初始化第一行和第一列 for i in range(1, n): # 第一行的格子只能从左边的格子过来 dp[0][i] = dp[0][i - 1] + abs(maps[0][i] - maps[0][i - 1]) for i in range(1, n): # 第一列的格子只能从上边的格子过来 dp[i][0] = dp[i - 1][0] + abs(maps[i][0] - maps[i - 1][0]) # 填充 dp 数组 for i in range(1, n): for j in range(1, n): # 计算从上方过来的体力消耗 from_up = dp[i - 1][j] + abs(maps[i][j] - maps[i - 1][j]) # 计算从左方过来的体力消耗 from_left = dp[i][j - 1] + abs(maps[i][j] - maps[i][j - 1]) # 取较小的体力消耗值 dp[i][j] = min(from_up, from_left) # 输出右下角格子的最小体力消耗值 print(dp[n - 1][n - 1]) ``` 代码解释 1. 输入读取:首先读取地图的大小 `n`,然后逐行读取地图中每个格子的高度,并将其存储在二维列表 `maps` 中。 2. 初始化 `dp` 数组:创建一个 `n x n` 的二维数组 `dp`,用于存储到达每个格子的最小体力消耗值。初始化第一行和第一列的 `dp` 值,因为它们只能从左边或上边的格子过来。 3. 填充 `dp` 数组:对于其他格子,计算从上方和左方过来的体力消耗,并取较小值作为到达该格子的最小体力消耗值。 4. 输出结果:最后输出右下角格子的最小体力消耗值。 复杂度分析 - 时间复杂度:$O(n^2)$,因为需要遍历地图中的每个格子。 - 空间复杂度:$O(n^2)$,主要用于存储 `dp` 数组。 [2026-02-07 20:35:50 | AI问答 | 601点数解答]
- [字节豆包] 给你一个正整数 ,输出A的最高位的比特与最低位的比特。 例如,给你 A=26,我们可以将A化成二进制为 11010 则A 的最高数是 10000,输出 10000 的十进制为 16。 则A 的最低数是 10,输出 10 的十进制为 2。 再例如,给你 A=88,我们可以将A化成二进制为 1011000 则A的最高数是1000000,输出为64。 则A的最低数是1000,输出为8。 输入 每行输入一个正整数 。 输出 输出对应的最高数,最低数,一行一个。 样例输入 复制 88 样例输出 复制 64 8 来源/分类 数论 位运算(398点数解答 | 2026-01-23 19:47:50)29
- [DeepSeek] 给你一个正整数 ,输出A的最低数。 例如,给你 A=26,我们可以将A化成二进制为 11010 ,则A 的最低数是 10,输出 10 的十进制为 2。 再例如,给你 A=88,我们可以将A化成二进制为 1011000,则A的最低数是1000,输出为8。 输入 输入包含多组测试样例。每行输入一个正整数 。当输入 0 时,输入结束。 输出 对于每一个输入,输出对应的最低数。 样例输入 复制 26 88 0 样例输出 复制 2 8(775点数解答 | 2026-01-23 19:40:10)25
- [字节豆包] 题目描述 某快递公司的基础运费如下: 3 3 斤以下(含):普通 8 8 元,特快 12 12 元 3 3 斤以上:普通 超出 3 3 斤的部分每斤加收 1 1 元,特快 超出 3 3 斤的部分每斤加收 2 2 元 输入格式 一行,两个整数 a , b a,b, 其中 a a 表示物品重量(斤), b = 0 b=0 表示普通, b = 1 b=1 表示特快。 输出格式 输出费用用C++简答(480点数解答 | 2025-12-21 22:04:58)58
- [字节豆包] 某快递公司的基础运费如下:c++ 3 斤以下(含):普通 8 元,特快 12 元 3 斤以上:普通 超出 3 斤的部分每斤加收 1 元,特快 超出 3 斤的部分每斤加收 2 元 输入格式 一行,两个整数 a,b, 其中 a 表示物品重量(斤), b=0 表示普通, b=1 表示特快。 输出格式 输出费用(472点数解答 | 2025-12-27 20:39:33)27
- [字节豆包] 题目描述 某快递公司的基础运费如下: 3 3 斤以下(含):普通 8 8 元,特快 12 12 元 3 3 斤以上:普通 超出 3 3 斤的部分每斤加收 1 1 元,特快 超出 3 3 斤的部分每斤加收 2 2 元 输入格式 一行,两个整数 a , b a,b, 其中 a a 表示物品重量(斤), b = 0 b=0 表示普通, b = 1 b=1 表示特快。 输出格式 输出费用 c++(385点数解答 | 2026-02-03 14:00:23)18
- [字节豆包] 题目描述 在甜甜圈王国中,每颗甜甜圈都有一个甜度值 S 来衡量其甜蜜程度。根据甜度的不同,甜甜圈被评定为不同的等级,具体规则如下: 如果 S 在 0 到 25 之间(包含 0 和 25 ),输出 "普通甜甜圈"; 如果 S 在 26 到 50 之间(包含 26 和 50 ),输出 "美味甜甜圈"; 如果 S 在 51 到 75 之间(包含 51 和 75 ),输出 "极品甜甜圈"; 如果 S 在 76 到 99 之间(包含 76 和 99 ),输出 "绝世甜甜圈"; 如果 S 等于 100 ,输出 "传说甜甜圈"。 请根据给定的甜度值 S,输出对应的甜甜圈等级名称。 输入格式 一行一个整数 S,表示甜甜圈的甜度值。(243点数解答 | 2025-12-06 18:35:50)63
- [字节豆包] 题目描述 读入一个 的数字矩阵,输出数字矩阵的主对角线之和。 即自左上到右下这条对角线。 输入 读入一个整数 , 不超过 。 接下来读入 行 列的数字矩阵。每个数字的范围在 ~ 之间。 输出 输出数字矩阵的主对角线之和。 样例输入 复制 10 10 4 4 3 7 9 8 5 7 9 10 10 6 3 10 3 6 4 10 3 4 10 4 1 4 4 8 8 8 7 7 9 9 9 9 9 10 4 3 5 1 6 2 6 4 6 6 5 8 10 3 9 8 7 6 9 8 7 6 4 2 7 9 5 7 3 5 4 8 4 1 2 1 4 10 3 2 2 8 2 10 6 10 8 5 5 10 9 6 6 7 6 4 5 10 5 6 5 10 9 样例输出 复制(358点数解答 | 2025-12-08 12:25:06)55
- [字节豆包] 题目描述 读入一个 的数字矩阵,输出数字矩阵左上角的数字之和。 如上图蓝色部分所示:副对角线数字上方的就是左上角数字。 输入 读入一个整数 , 不超过 。 接下来读入 行 列的数字矩阵。每个数字的范围在 ~ 之间。 输出 输出数字矩阵的左上角之和。 样例输入 复制 10 10 4 4 3 7 9 8 5 7 9 10 10 6 3 10 3 6 4 10 3 4 10 4 1 4 4 8 8 8 7 7 9 9 9 9 9 10 4 3 5 1 6 2 6 4 6 6 5 8 10 3 9 8 7 6 9 8 7 6 4 2 7 9 5 7 3 5 4 8 4 1 2 1 4 10 3 2 2 8 2 10 6 10 8 5 5 10 9 6 6 7 6 4 5 10 5 6 5 10 9 样例输出 复制 273(333点数解答 | 2025-12-08 17:52:36)53
- [字节豆包] 题目描述 读入一个 的数字矩阵,输出数字矩阵左上角的数字之和。 如上图蓝色部分所示:副对角线数字上方的就是左上角数字。 输入 读入一个整数 , 不超过 。 接下来读入 行 列的数字矩阵。每个数字的范围在 ~ 之间。 输出 输出数字矩阵的左上角之和。 样例输入 复制 10 10 4 4 3 7 9 8 5 7 9 10 10 6 3 10 3 6 4 10 3 4 10 4 1 4 4 8 8 8 7 7 9 9 9 9 9 10 4 3 5 1 6 2 6 4 6 6 5 8 10 3 9 8 7 6 9 8 7 6 4 2 7 9 5 7 3 5 4 8 4 1 2 1 4 10 3 2 2 8 2 10 6 10 8 5 5 10 9 6 6 7 6 4 5 10 5 6 5 10 9 样例输出 复制 273(387点数解答 | 2025-12-08 17:54:37)56
- [DeepSeek] 题目描述 读入一个 的数字矩阵,输出数字矩阵的主对角线之和。 即自左上到右下这条对角线。 输入 读入一个整数 , 不超过 。 接下来读入 行 列的数字矩阵。每个数字的范围在 ~ 之间。 输出 输出数字矩阵的主对角线之和。 样例输入 复制 10 10 4 4 3 7 9 8 5 7 9 10 10 6 3 10 3 6 4 10 3 4 10 4 1 4 4 8 8 8 7 7 9 9 9 9 9 10 4 3 5 1 6 2 6 4 6 6 5 8 10 3 9 8 7 6 9 8 7 6 4 2 7 9 5 7 3 5 4 8 4 1 2 1 4 10 3 2 2 8 2 10 6 10 8 5 5 10 9 6 6 7 6 4 5 10 5 6 5 10 9 样例输出 复制 68(107点数解答 | 2025-12-29 12:22:27)36
- [字节豆包] 题目描述 输入一个 行 列的图像,将它顺时针旋转90度后输出。 输入 第一行包含两个整数 和 ,表示图像包含像素点的行数和列数。, 。 接下来 行,每行 个整数,表示图像的每个像素点颜色值。相邻两个整数之间用单个空格隔开,每个元素均在 之间。 输出 行,每行 个整数,为顺时针旋转90度后的图像。相邻两个整数之间用单个空格隔开。 样例输入 复制 3 3 1 2 3 4 5 6 7 8 9 样例输出 复制 7 4 1 8 5 2 9 6 3(486点数解答 | 2025-12-09 12:25:11)93
- [百度文心] c++描述 一天,一个画家在森林里写生,突然爆发了山洪,他需要尽快返回住所中,那里是安全的。 森林的地图由R行C列组成,空白区域用点“.”表示,洪水的区域用“*”表示,而岩石用“X”表示,另画家的住所用“D”表示,画家用“S”表示。 有以下几点需要说明: 1.每一分钟画家能向四个方向移动一格(上、下、左、右)。 2.每一分钟洪水能蔓延到四个方向的相邻格子(空白区域)。 3.洪水和画家都不能通过岩石区域。 4.画家不能通过洪水区域(同时也不行,即画家不能移到某个格子,该格子在画家达到的同时被洪水蔓延到了,这也是不允许的)。 5. 洪水蔓不到画家的住所。 给你森林的地图,编写程序输出最少需要花费多长时间才能从开始的位置赶回家中。 输入描述 输入第一行包含两个整数R和C(R,C<=50)。 接下来R行每行包含C个字符(“.”、“*”、“X”、“D”或“S”)。 地图保证只有一个“D”和一个“S”。 输出描述 输出画家最快安全到达住所所需的时间,如果画家不可能安全回家则输出“KAKTUS”。 用例输入 1 3 3 D.* ... .S. 用例输出 1 (1384点数解答 | 2025-03-16 17:33:49)380