题目描述 话说孙悟空取经的途中曾遇到一座大山,大山上有很多宝藏,当然了,妖怪也是在所难免的,此山能大能小,最高不过50米,最宽嘛也不过40米而已,此山是通往西天取经的必经之路,山上有很多的宝藏,宝藏都位于洞穴之中,你路过洞穴,就能获得宝藏,当然了,你遇到妖怪之后还要上交过路费,当宝藏大于等于0的时候,你就能获得它,当少于0的时候,说明洞穴中存在妖怪,你要上交过路费了,宝藏最大不超过100块,不小于-100块;小猴子是打不过他们的,因为他没有了72变,你要想问为什么,这个、、、 PS:此时的你位于左山脚下,你的任务就是到达山顶最右端,并取得最大的价值,以供在以后的路上开销,此山特别的神奇,当你每上升一层的时候,你的下面就全部自动消失了,当你每向右走一层的时候,你的左面也全部自动消失了; 输入 输入: 开始先输入一个T,表示下面有T组数据; 接下来会有T组测试用例,每组数组第一行有两个数x,y,分别表示山的高和山的宽; 接下来有x行,每行有y个数;第一行表示最上面一层,第二行最上面的下面一层、、、最后一行表示最底层; 输出 输出T组数据,每组数据表示猴子所能获得的最大的金钱数; 样例输
以下是解决该问题的C++代码: ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; // 函数用于计算最大价值 int maxValue(vector<vector<int>>& mountain) { int x = mountain.size(); int y = mountain[0].size(); // 创建一个二维数组dp来存储到达每个位置的最大价值 vector<vector<int>> dp(x, vector<int>(y, 0)); // 初始化dp数组的第一个元素 dp[0][0] = mountain[0][0]; // 初始化第一行,因为只能从左边到达 for (int j = 1; j < y; ++j) { dp[0][j] = dp[0][j - 1] + mountain[0][j]; } // 初始化第一列,因为只能从上面到达 for (int i = 1; i < x; ++i) { dp[i][0] = dp[i - 1][0] + mountain[i][0]; } // 填充dp数组的其余部分 for (int i = 1; i < x; ++i) { for (int j = 1; j < y; ++j) { // 选择从上面或左边到达当前位置的最大价值 dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + mountain[i][j]; } } // 返回到达山顶最右端的最大价值 return dp[x - 1][y - 1]; } int main() { int T; cin >> T; while (T--) { int x, y; cin >> x >> y; // 创建一个二维数组来存储山的信息 vector<vector<int>> mountain(x, vector<int>(y, 0)); // 读取山的信息 for (int i = 0; i < x; ++i) { for (int j = 0; j < y; ++j) { cin >> mountain[i][j]; } } // 计算最大价值 int result = maxValue(mountain); // 输出结果 cout << result << endl; } return 0; } ``` 代码解释 1. 输入处理:首先读取测试用例的数量`T`,然后对于每个测试用例,读取山的高度`x`和宽度`y`,并读取山的每个位置的宝藏或过路费信息。 2. 动态规划数组`dp`:创建一个二维数组`dp`,其中`dp[i][j]`表示到达位置`(i, j)`的最大价值。 3. 初始化`dp`数组:初始化`dp[0][0]`为起点的宝藏或过路费,然后初始化第一行和第一列,因为只能从左边或上面到达。 4. 填充`dp`数组:对于其余位置`(i, j)`,选择从上面或左边到达的最大价值加上当前位置的宝藏或过路费。 5. 输出结果:返回`dp[x - 1][y - 1]`,即到达山顶最右端的最大价值。 额外注意的逻辑点 1. 边界条件处理:在初始化第一行和第一列时,要确保只考虑从左边或上面到达的情况,避免越界访问。 2. 状态转移方程:在填充`dp`数组时,要正确选择从上面或左边到达的最大价值,以确保得到最优解。 3. 输入的合法性:要确保输入的山的高度和宽度在规定范围内,避免数组越界。 [2025-06-14 21:01:48 | AI写代码神器 | 862点数解答]
- [字节豆包] 300,0,144,1,0,0 300,0,144,0,1,0 300,0,144,0,0,1 300,0,144,1,1,0 300,0,108,0,1,1 184,0,72,1,0,1 184,0,72,0,0,0 184,0,72,0,0,0 184,0,72,0,0,0 184,1,72,1,0,1 184,1,72,0,0,0 184,1,72,0,0,0 184,1,72,0,0,0 184,1,72,0,0,0 184,1,720,0,0,0构建数据文件data.txt(377点数解答 | 2024-12-13 08:02:21)231
- [字节豆包] 题目描述 话说孙悟空取经的途中曾遇到一座大山,大山上有很多宝藏,当然了,妖怪也是在所难免的,此山能大能小,最高不过50米,最宽嘛也不过40米而已,此山是通往西天取经的必经之路,山上有很多的宝藏,宝藏都位于洞穴之中,你路过洞穴,就能获得宝藏,当然了,你遇到妖怪之后还要上交过路费,当宝藏大于等于0的时候,你就能获得它,当少于0的时候,说明洞穴中存在妖怪,你要上交过路费了,宝藏最大不超过100块,不小于-100块;小猴子是打不过他们的,因为他没有了72变,你要想问为什么,这个、、、 PS:此时的你位于左山脚下,你的任务就是到达山顶最右端,并取得最大的价值,以供在以后的路上开销,此山特别的神奇,当你每上升一层的时候,你的下面就全部自动消失了,当你每向右走一层的时候,你的左面也全部自动消失了; 输入 输入: 开始先输入一个T,表示下面有T组数据; 接下来会有T组测试用例,每组数组第一行有两个数x,y,分别表示山的高和山的宽; 接下来有x行,每行有y个数;第一行表示最上面一层,第二行最上面的下面一层、、、最后一行表示最底层; 输出 输出T组数据,每组数据表示猴子所能获得的最大的金钱数; 样例输(862点数解答 | 2025-06-14 21:01:48)172
- [字节豆包] 一块 n×n 正方形的黑白瓦片的图案要被转换成新的正方形图案。写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 转 90°:图案按顺时针转 90°。 转 180°:图案按顺时针转 180°。 转 270°:图案按顺时针转 270°。 反射:图案在水平方向翻转(以中央铅垂线为中心形成原图案的镜像)。 组合:图案在水平方向翻转,然后再按照 1∼3 之间的一种再次转换。 不改变:原图案不改变。 无效转换:无法用以上方法得到新图案。 如果有多种可用的转换方法,请选择序号最小的那个。 只使用上述 7 个中的一个步骤来完成这次转换。 输入格式 第一行一个正整数 n。 然后 n 行,每行 n 个字符,全部为 @ 或 -,表示初始的正方形。 接下来 n 行,每行 n 个字符,全部为 @ 或 -,表示最终的正方形。 输出格式 单独的一行包括 1∼7 之间的一个数字(在上文已描述)表明需要将转换前的正方形变为转换后的正方形的转换方法。 输入输出样例 输入 #1复制 3 @-@ --- @@- @-@ @-- --@ 输出 #1复制 1 说明/提示 【数据(817点数解答 | 2025-11-25 19:03:09)47
- [字节豆包] 一是未充分调动干部自学积极性。尽管定期组织学习中央八项规定精神有关内容,但多以集中领学文件为主,未能有效引导个人自学,也缺乏多样化形式,导致干部学习热情和主动性不足。二是学习研讨参与度不均衡。学习教育工作开展期间,部分领导干部发言积极,普通党员干部参与度不高,存在“旁观者”现象。研讨过程中,结合实际工作讨论不够紧密,未将规定精神有效融入日常业务,无法充分发挥学习指导实践的作用。三是问题查摆不够精准。部分党员干部问题查摆缺乏针对性,未结合自身岗位特点和工作实际,存在“通用问题多、个性问题少”的情况。针对存在问题,提出下步工作打算,要质量高的问题,最好可以让材料一遍过,领导不修改(767点数解答 | 2025-08-07 17:07:03)160
- [DeepSeek] 因数:又称为约数,如果整数 𝑎 除以整数 𝑏 的商正好是整数而没有余数,我们就说 𝑏 是 𝑎 的因数 质数:又称为素数,一个大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的数叫做质数。 2 是最小的质数 质因数:如果一个数 𝑎 的因数 𝑏 同时也是质数,那么 𝑏 就是 𝑎 的一个质因数,例如: 8 = 2 ∗ 2 ∗ 2 , 2 就是 8 的质因数, 12 = 2 ∗ 2 ∗ 3 , 2 和 3 就是 12 的质因数。 给定两个正整数 𝑁 和 𝑀 ( 1 <= 𝑁 <= 𝑀 <= 10 7 ) ,统计 𝑁 到 𝑀 之间(含 𝑁 和 𝑀 )每个数所包含的质因数的个数,输出其中最大的个数。 例如: 当N=6,M=10,6到10之间 6的质因数是2、3,共有2个 7的质因数是7,共有1个 8的质因数是2、2、2,共有3个 9的质因数是3、3,共有2个 10的质因数是2、5,共有2个 6到10之间的数中质因数最多的是8,质因数有3个,故输出3。 样例输入 复制 6 10 样例输出 复制 3(245点数解答 | 2026-01-18 12:43:51)20
- [字节豆包] 输入一个正整数 N,输出 N 行 N 列字母,字母为大写英文字母,执行效果如下。输入正整数 27,输出 27 行字母,每行 27 个字母。第一行从A 开始,第二行 B 开始。当到达 Z,再从 A 开始。c++ image 输入格式 输入一行,一个大于等于 1 的正整数 N。 输出格式 输出上图所示的字母阵列。(340点数解答 | 2026-01-02 19:26:59)25
- [字节豆包] 小 L 和小 Q 在玩一个策略游戏。 有一个长度为 的数组 和一个长度为 的数组 ,在此基础上定义一个大小为 的矩阵 ,满足 。所有下标均从 开始。 游戏一共会进行 轮,在每一轮游戏中,会事先给出 个参数 ,满足 、 。 游戏中,小 L 先选择一个 之间的下标 ,然后小 Q 选择一个 之间的下标 。定义这一轮游戏中二人的得分是 。 小 L 的目标是使得这个得分尽可能大,小 Q 的目标是使得这个得分尽可能小。同时两人都是足够聪明的玩家,每次都会采用最优的策略。 请问:按照二人的最优策略,每轮游戏的得分分别是多少? 【数据范围】 对于所有数据, , 。对于每轮游戏而言, , 。 输入 第一行输入三个正整数 ,分别表示数组 ,数组 的长度和游戏轮数。 第二行: 个整数,表示 ,分别表示数组 的元素。 第三行: 个整数,表示 ,分别表示数组 的元素。 接下来 行,每行四个正整数,表示这一次游戏的 。 输出 输出共 行,每行一个整数,分别表示每一轮游戏中,小 L 和小 Q 在最优策略(676点数解答 | 2025-12-12 18:49:42)49
- [DeepSeek] 在学习了进制转换后, 𝑇 𝐽 老师提出一个问题: 𝑛 ! 转换成 𝑃 进制后,末尾会有多少零呢? 比如: 10 ! = 1 ∗ 2 ∗ . . . ∗ 10 = ( 3628800 ) 10 = ( 156574400 ) 8 = ( 1101110101111100000000 ) 2 = ( 375 𝐹 00 ) 16 10 ! 表示成十进制、八进制,未尾都有 2 个零; 10 ! 表示成二进制未尾有 8 个零。 请你编程计算 𝑛 ! 表示 𝑃 进制后末尾零的个数? 输入 一行,两个用空格隔开的整数 𝑛 , 𝑝 . 输出 一行,一个整数,表示零的个数。 样例输入 复制 10 2 样例输出 复制 8 提示 对于20%数据, 𝑝 = 10 。 对于100%数据, 2 ≤ 𝑛 ≤ 100000 , 2 ≤ 𝑝 ≤ 100000(549点数解答 | 2026-01-11 17:49:54)25
- [字节豆包] 题目描述 请根据邮件的重量和用户选择是否加急计算邮费。计算规则: 重量在 1000 1000 以内(包括),基本费 8 8 元; 超过 1000 1000 克的部分,每 500 500 克加收超重费 4 4 元,不足 500 500 克部分按 500 500 克计算; 如果用户选择加急,多收 5 5 元。 输入格式 一行,包含一个正整数 x x 和一个字符 c(y 或 n),之间用一个空格隔开,分别表示重量和是否加急。 如果字符是 y,说明选择加急;如果字符是 n,说明不加急。 输出格式 输出一行一个正整数,表示邮费。 输入输出样例 输入 #1复制 1200 y 输出 #1复制 17 说明/提示 对于100%数据 1 ≤ x ≤ 1 0 6 1≤x≤10 6 在洛谷, 享受 coding 的欢乐(88点数解答 | 2024-11-09 15:33:30)376
- [阿里通义] 题目描述 请根据邮件的重量和用户选择是否加急计算邮费。计算规则: 重量在 1000 1000 以内(包括),基本费 8 8 元; 超过 1000 1000 克的部分,每 500 500 克加收超重费 4 4 元,不足 500 500 克部分按 500 500 克计算; 如果用户选择加急,多收 5 5 元。 输入格式 一行,包含一个正整数 x x 和一个字符 c(y 或 n),之间用一个空格隔开,分别表示重量和是否加急。 如果字符是 y,说明选择加急;如果字符是 n,说明不加急。 输出格式 输出一行一个正整数,表示邮费。 输入输出样例 输入 #1复制 1200 y 输出 #1复制 17 说明/提示 对于100%数据 1 ≤ x ≤ 1 0 6 1≤x≤10 6 在洛谷, 享受 coding 的欢乐(554点数解答 | 2024-11-09 15:34:05)383
- [字节豆包] 请根据邮件的重量和用户选择是否加急计算邮费。计算规则: 重量在 1000 1000 以内(包括),基本费 8 8 元; 超过 1000 1000 克的部分,每 500 500 克加收超重费 4 4 元,不足 500 500 克部分按 500 500 克计算; 如果用户选择加急,多收 5 5 元。 输入格式 一行,包含一个正整数 x x 和一个字符 c(y 或 n),之间用一个空格隔开,分别表示重量和是否加急。 如果字符是 y,说明选择加急;如果字符是 n,说明不加急。 输出格式 输出一行一个正整数,表示邮费。 输入输出样例 输入 #1复制 1200 y 输出 #1复制 17 说明/提示 对于100%数据 1 ≤ x ≤ 1 0 6 1≤x≤10 6(244点数解答 | 2024-12-31 19:36:29)291
- [字节豆包] 叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻。毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘逝去的歌。一千多个日夜的欢笑和泪水,全凝聚在毕业晚会上,相信,这一定是一生最难忘的时刻! 彩排了一次,老师不太满意。当然啦,取每位同学的号数来找最大公约数显然不太合理。于是老师给每位同学评了一个能力值。于是现在问题变为,从 个学生中挑出 个人使得他们的默契程度(即能力值的最大公约数)最大。但因为节目太多了,而且每个节目需要的人数又不知道。老师想要知道所有情况下能达到的最大默契程度是多少。这下子更麻烦了,还是交给你吧~ PS:一个数的最大公约数即本身。 输入 第一行一个正整数 。 第二行为 个空格隔开的正整数,表示每个学生的能力值。 输出 总共 行,第 行为 情况下的最大默契程度。 样例输入 复制 4 1 2 3 4 样例输出 复制 4 2 1 1 提示 记输入数据中能力值的最大值为 。 - 对于 的数据, , ; - 对于另 的数据, , ; - 对于 的数据, , 。 来源/分类(487点数解答 | 2026-01-24 13:10:18)25