news 2026/4/2 23:26:55

GESP认证C++编程真题解析 | P11248 [GESP202409 七级] 矩阵移动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | P11248 [GESP202409 七级] 矩阵移动

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[P11248 GESP202409 七级] 矩阵移动 - 洛谷

【题目描述】

小杨有一个n × m n \times mn×m的矩阵,仅包含01?三种字符。矩阵的行从上到下编号依次为1 , 2 , … , n 1,2,\dots, n1,2,,n,列从左到右编号依次为1 , 2 , … , m 1, 2, \dots, m1,2,,m。小杨开始在矩阵的左上角( 1 , 1 ) (1,1)(1,1),小杨只能向下或者向右移动,最终到达右下角( n , m ) (n, m)(n,m)时停止,在移动的过程中每经过一个字符1得分会增加一分(包括起点和终点),经过其它字符则分数不变。小杨的初始分数为0 00分。

小杨可以将矩阵中不超过x xx个字符?变为字符1。小杨在修改矩阵后,会以最优的策略从左上角移动到右下角。他想知道自己最多能获得多少分。

【输入】

第一行包含一个正整数t tt,代表测试用例组数,接下来是t tt组测试用例。对于每组测试用例,一共n + 1 n + 1n+1行。

第一行包含三个正整数n , m , x n, m, xn,m,x,含义如题面所示。
之后n nn行,每行一个长度为m mm的仅含01?的字符串。

【输出】

对于每组测试用例,输出一行一个整数,代表最优策略下小杨的得分最多是多少。

【输入样例】

2 3 3 1 000 111 01? 3 3 1 000 ?0? 01?

【输出样例】

4 2

【算法标签】

《洛谷 P11248 矩阵移动》 #动态规划DP# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;string m1[1000];// 存储网格地图,m1[i]表示第i行字符串intt,n,m,dp[505][505][300],k;// t: 测试用例数, n: 行数, m: 列数, k: 最大可使用'?'数intmain(){cin>>t;// 输入测试用例数while(t--){// 输入网格大小和k值cin>>n>>m>>k;// 读入网格,并在每行前添加一个字符,使索引从1开始for(inti=1;i<=n;i++){cin>>m1[i];m1[i]="e"+m1[i];// 在字符串前添加一个字符,使得列索引从1开始}// 初始化动态规划数组为0memset(dp,0,sizeof(dp));// 动态规划计算最大路径for(inti=1;i<=n;i++)// 遍历行{for(intj=1;j<=m;j++)// 遍历列{for(intb=0;b<=k;b++)// 遍历使用的'?'数量{// 情况1:不使用当前位置的'?'(或当前位置是'1'或'0')// 从上方或左方转移,不消耗'?'名额dp[i][j][b]=(m1[i][j]=='1')+max(dp[i-1][j][b],dp[i][j-1][b]);// 情况2:如果当前位置是'?',且还有'?'名额可用if(b&&m1[i][j]=='?'){// 将'?'当作'1',消耗一个'?'名额dp[i][j][b]=max(dp[i][j][b],1+max(dp[i-1][j][b-1],dp[i][j-1][b-1]));}}}}// 在所有可能的'?'使用数量中,找到最大价值intans=0;for(inti=0;i<=k;i++){ans=max(ans,dp[n][m][i]);}cout<<ans<<endl;}return0;}

【运行结果】

2 3 3 1 000 111 01? 4 3 3 1 000 ?0? 01? 2
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 22:17:28

SQL性能测试终极指南:SqlQueryStress压力测试工具详解

SQL性能测试终极指南&#xff1a;SqlQueryStress压力测试工具详解 【免费下载链接】SqlQueryStress SqlQueryStress 是一个用于测试 SQL Server 查询性能和负载的工具&#xff0c;可以生成大量的并发查询来模拟高负载场景。 通过提供连接信息和查询模板&#xff0c;可以执行负载…

作者头像 李华
网站建设 2026/3/14 20:37:45

Sketch实时预览插件:彻底告别设计稿反复导出的效率革命

Sketch实时预览插件&#xff1a;彻底告别设计稿反复导出的效率革命 【免费下载链接】sketch-preview Sketch plugin to preview mockups in Skala Preview 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-preview 还在为每次设计调整都要手动导出、切换应用查看效…

作者头像 李华
网站建设 2026/3/31 23:46:47

打造专属粉丝社群:HarukaBot让B站动态直达QQ群

打造专属粉丝社群&#xff1a;HarukaBot让B站动态直达QQ群 【免费下载链接】HarukaBot 将 B 站的动态和直播信息推送至 QQ&#xff0c;基于 NoneBot2 开发 项目地址: https://gitcode.com/gh_mirrors/ha/HarukaBot 在粉丝文化盛行的今天&#xff0c;如何让社群成员第一时…

作者头像 李华
网站建设 2026/3/27 12:36:52

HTTP 方法

RESTful API 中的 HTTP 方法详解 在 RESTful API 设计中&#xff0c;HTTP 方法&#xff08;HTTP Verbs&#xff09; 是表达对资源操作意图的核心方式。不同的 HTTP 方法对应不同的语义&#xff0c;正确使用它们能让 API 更清晰、可预测和符合 REST 原则。 1. 核心 HTTP 方法及…

作者头像 李华
网站建设 2026/4/1 14:54:23

ZyPlayer 3大核心问题解决方案:从新手到专家的配置指南

ZyPlayer 3大核心问题解决方案&#xff1a;从新手到专家的配置指南 【免费下载链接】ZyPlayer 跨平台桌面端视频资源播放器,免费高颜值. 项目地址: https://gitcode.com/gh_mirrors/zy/ZyPlayer ZyPlayer作为一款功能强大的跨平台桌面视频播放器&#xff0c;经常让新手用…

作者头像 李华
网站建设 2026/4/2 12:53:29

RESTful API 测试和调试

RESTful API 测试和调试实战指南 测试和调试是 RESTful API 开发中最重要的环节&#xff01;一个好的 API 不仅要设计规范&#xff0c;还要可靠、可验证。下面从工具、方法到最佳实践&#xff0c;一步步教你如何高效测试和调试。 1. 常用测试工具推荐&#xff08;2025 年主流…

作者头像 李华