GESP C++2024年12月四级考试编程题(第二题 字符排序)详细解析 📅 发布时间:2026/7/12 10:27:27 👁️ 浏览次数: 一、故事开场字母火车排队大赛1、小杨有很多节“小火车车厢”每节车厢上写着一个字符串比如aa ac de2、现在小杨要把这些车厢按某种顺序连接起来变成一列超级长的火车。目标只有一个拼接后的整个字符串必须“从小到大排列”也就是说前一个字符 后一个字符就像排队一样不能有人插队 二、题目到底问什么对于每组数据有 n 个字符串问是否存在一种排列顺序使得拼接后的字符串整体是“非递减”的如果可以输出 1如果不行输出 0✏ 三、思考第一步我们要试多少种排列1、如果用“枚举全排列”n100 的时候……❌ 100! 种排列2、这是天文数字所以我们必须找到一种“聪明的规律”。 四、关键发现1、想一想如果最终拼接后要整体有序那么每个字符串是不是应该 先按字典序排序2、因为C 中 string 的 sort 是按字典序排序的。例如aa ac de3、如果我们把字符串先排序再拼接aaacde是不是天然更容易有序4、这就是本题最重要的突破口 五、完整思考过程我们一步步推理1、第一步读入字符串string s[105];为什么用数组因为最多 100 个字符串。2、第二步排序字符串sort(s, s n);这是 C 的字典序排序。1比如aac bc2排序后aac bc第三步拼接string t ; for (int i 0; i n; i) { t s[i]; }1这里用到了⭐ string 拼接知识t s[i];2表示把 s[i] 加到 t 后面。第四步检查是否整体有序for (int i 1; i t.size(); i) { if (t[i] t[i - 1]) { fl false; break; } }逻辑非常清晰从第二个字符开始和前一个字符比较如果出现“倒退”就失败 六、举例讲解样例11、输入3 aa ac de1排序后aa ac de2拼接aaacde3逐个检查a a a a a c c d d e4全部通过 ✅输出 1❌ 七、举例讲解样例22 aac bc1排序aac bc2拼接aacbc3检查a a a c c b ❌ 出现倒退4失败输出 0 八、参考程序#include iostream #include algorithm using namespace std; int main() { int T; cin T; // 测试组数 while (T--) { int n; cin n; string s[105]; for (int i 0; i n; i) { cin s[i]; } // 字典序排序 sort(s, s n); // 拼接 string t ; for (int i 0; i n; i) { t s[i]; } // 检查是否整体非递减 bool fl true; for (int i 1; i t.size(); i) { if (t[i] t[i - 1]) { fl false; break; } } cout fl \n; } return 0; } 九、本题考察哪些能力这题考察了① string 的基本操作输入字符串比较字符串拼接字符串获取长度 size()② sort 排序sort(s, sn);对 string 数组排序 字典序排序。③ 思维突破从❌ 枚举全排列到✅ 利用排序 验证这就是算法思维升级 十、总结1、这道题用排序代替暴力枚举用拼接构造答案用遍历验证结果。2、理解了这道题✅ string 掌握✅ sort 掌握✅ 枚举思维升级附《GESP四级 string 排序 10道进阶训练题》适合备考GESP C 四级认证 第一题字母火车排队1、 题目小杨有 n 个字符串车厢。他要按字典序排好队然后拼接起来。问拼接后的字符串是否整体非递减2、 思考排序字符串数组拼接检查是否 t[i] t[i-1]3、 程序#include iostream #include algorithm using namespace std; int main(){ int n; cinn; string s[105]; for(int i0;in;i) cins[i]; sort(s,sn); string t; for(int i0;in;i) ts[i]; bool oktrue; for(int i1;it.size();i) if(t[i]t[i-1]) okfalse; coutok; } 第二题最长的字典序字符串1、 题目给你 n 个字符串找字典序最大的那个。2 思路排序后最后一个就是最大。3、 程序sort(s,sn); couts[n-1]; 第三题最短字符串优先1、 题目先按长度排序如果长度相同按字典序排序。2、 需要自定义排序规则if(a.size()!b.size()) return a.size()b.size(); return ab;3、 程序#include iostream #include algorithm using namespace std; bool cmp(string a,string b){ if(a.size()!b.size()) return a.size()b.size(); return ab; } int main(){ int n; cinn; string s[105]; for(int i0;in;i) cins[i]; sort(s,sn,cmp); for(int i0;in;i) couts[i]endl; } 第四题去重排序1、 题目去掉重复字符串再排序。2、 程序sort(s,sn); int k0; for(int i1;in;i){ if(s[i]!s[k]) s[k]s[i]; } for(int i0;ik;i) couts[i]endl; 第五题拼接最小数1、 题目给多个字符串数字拼接后形成最小字典序。例如30 3应该 3032、 排序规则比较 ab 和 ba3、 程序bool cmp(string a,string b){ return ab ba; } 第六题统计每个字符串出现次数1、 题目排序后统计相同字符串数量。2、 程序sort(s,sn); int cnt1; for(int i1;in;i){ if(s[i]s[i-1]) cnt; else{ couts[i-1] cntendl; cnt1; } } couts[n-1] cntendl; 第七题字符串逆序排序1、 题目按字典序从大到小排序。2、 程序sort(s,sn,greaterstring()); 第八题按最后一个字符排序1、 题目比较字符串最后一个字符大小。2、 程序bool cmp(string a,string b){ return a.back()b.back(); } 第九题回文字符串筛选1、 题目找出所有回文字符串并排序。2、回文数筛选bool isPal(string s){ int l0,rs.size()-1; while(lr){ if(s[l]!s[r]) return false; l; r--; } return true; }2、 程序#include iostream #include algorithm #include string using namespace std; bool isPal(string s){ int l0,rs.size()-1; while(lr){ if(s[l]!s[r]) return false; l; r--; } return true; } int main () { int n; cin n; string s[10] ; string ans[10]; int k0; for(int i0;in;i){ cins[i]; if(isPal(s[i])) ans[k]s[i]; } sort(ans1,ansk1); for(int i1;ik;i) cout ans[i] ; return 0; } 第十题字符串拼接后最长递增子序列1、 题目拼接后求最长非递减连续子串长度。2、 程序string t; for(int i0;in;i) ts[i]; int ans1,cnt1; for(int i1;it.size();i){ if(t[i]t[i-1]) cnt; else cnt1; ansmax(ans,cnt); } coutans; 总结1、题目涵盖✅ 字典序排序✅ 自定义排序✅ 字符串拼接✅ 去重技巧✅ 统计技巧✅ 回文判断✅ 拼接比较2、如果能把这 10 题完全掌握GESP四级 string sort 模块基本没问题了。
【护网行动】2026护网行动全攻略|从认知到实战,网安人必看,收藏这一篇就够了! 2026护网行动全攻略|从认知到实战,网安人必看 每年6-9月,网络安全领域最受关注的“护网行动”都会如期开启。作为国家级网络安全实战演练,护网行动不仅是检验企事业单位防护能力的“年度大考”,更是网安从业者、计算机… 2026/7/7 17:47:08
国产32位微控制器MCU怎么选?2026年主流厂商推荐榜单与测评指南 前言在集成电路国产化进程加速的背景下,32位微控制器(MCU)作为智能硬件的核心控制单元,广泛应用于工业控制、汽车电子、智慧能源等诸多领域,国产厂商凭借技术突破与产品创新,逐渐成为市场核心力量。其中&am… 2026/7/11 12:14:27
基于环境监测需求的交通噪声在线监测系统解决方案 随着城市化进程加快,道路交通噪声污染已成为环境监测领域的重要课题。本文结合金叶仪器在环境监测领域的技术积累,探讨道路交通噪声监测设备的技术特点与应用场景,为相关从业人员提供设备选型参考。一、道路交通噪声监测的技术要点 根据《声环… 2026/7/11 10:25:36
如何判断企业弹性工作制是否真实落地 我无法基于该标题生成符合要求的博文内容。原因如下:标题“网传 宇树 弹性双休仅是对外标榜”属于对某企业内部管理政策的网络传言性表述,其核心并非可验证、可复现、可操作的技术项目、生活实践、手工制作、职场方法或创意实现,而是指向未经… 2026/7/12 10:26:42
Anbox硬件加速渲染揭秘:OpenGL ES在容器中的实现原理 Anbox硬件加速渲染揭秘:OpenGL ES在容器中的实现原理 【免费下载链接】anbox 仓库关闭的原因:https://gitee.com/openeuler/community/pulls/3095 项目地址: https://gitcode.com/openeuler/anbox 前往项目官网免费下载:https://ar.op… 2026/7/12 10:26:42
QMCDecode终极指南:快速解锁QQ音乐加密格式,实现跨平台播放自由 QMCDecode终极指南:快速解锁QQ音乐加密格式,实现跨平台播放自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目… 2026/7/12 10:26:42
HarmonyOS7 module.json5 配置全解:Ability 注册与权限 文章目录前言文件长什么样逐字段讲解注册一个新 Ability 的正确步骤代码实现权限怎么加才规范核心代码常见误区(小白必踩)完整可运行示例:module.json5 真配置完整示例写在最后前言 module.json5 是每个 HarmonyOS 模块的"身份证"。… 2026/7/12 10:26:42
NCMconverter:终极免费工具,3步解锁加密NCM音乐文件 NCMconverter:终极免费工具,3步解锁加密NCM音乐文件 【免费下载链接】NCMconverter NCMconverter将ncm文件转换为mp3或者flac文件 项目地址: https://gitcode.com/gh_mirrors/nc/NCMconverter 还在为下载的NCM格式音乐无法在其他设备播放而烦恼吗… 2026/7/12 10:24:42
多维聚合的本质:维度完整性与安全聚合的工程实践 1. 这不是简单的“分组求和”——多维聚合中的数据变形本质你手头有一张销售表,字段包括地区、产品线、季度、销售额、成本、客户等级。现在老板问:“华东区A类产品在Q2的高净值客户平均毛利率是多少?再按城市细分看看TOP3。”——这已经不是… 2026/7/12 10:22:42
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/12 0:01:13
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/12 0:01:13
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/12 0:03:14
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/12 0:01:13
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/12 0:01:13
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/12 0:03:14