news 2026/1/13 7:50:55

GESP2025年12月认证C++四级真题与解析(编程题2 (优先购买))

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP2025年12月认证C++四级真题与解析(编程题2 (优先购买))

一、先看原题:


二、题目解析:

1、📖 故事背景(先把题目“变简单”)

小 A 有一些钱 💰,
他走进了一家商店 🏬,
商店里有很多商品,每个商品都有:

  • 🏷️名字(name)

  • 💵价格(price)

  • 优先级(priority)

⚠️注意:优先级数字越小,级别越高!


🧠 小 A 的“买东西三大规则”

小 A 买东西非常讲规矩

🥇规则 1:
👉 永远先买优先级最高(数字最小)的商品

🥈规则 2:
👉 如果优先级一样,买价格最便宜

🥉规则 3:
👉 如果优先级、价格都一样,买名字字典序最小


🎯 题目要我们做什么?

👉 按上面三条规则,
👉 用小 A 的预算,把能买的商品都买下来
👉最后,把买到的商品名,按字典序输出


2、🧠 整体解题思路(先有“大脑地图”)

这道题的本质是一句话:

🧩“先按规则排序 → 再从前往后买 → 最后把名字排一下输出”

所以可以分成3 大步

1️⃣ 把商品按“购买规则”排序
2️⃣ 按顺序,一个一个买(看钱够不够)
3️⃣ 把买到的商品名字排序后输出


3、🧱 一步一步拆解


✅ 第一步:用结构体表示一个商品 📦

struct Item { string name; // 商品名 int price; // 价格 int priority; // 优先级(越小越好) };

🧒 可以这样理解:

一个Item
就是一张商品信息卡片


✅ 第二步:讲清楚 “怎么买才算更好” 🏆

我们要写一个比较规则函数

bool cmp(const Item &a, const Item &b) { if (a.priority != b.priority) return a.priority < b.priority; // 优先级小的先 if (a.price != b.price) return a.price < b.price; // 价格低的先 return a.name < b.name; // 名字小的先 }

🧒 这段话的意思是:

比较两个商品 a 和 b:

① 谁更重要?
② 谁更便宜?
③ 谁名字更靠前?


🧠 知识点小总结

📌sort + cmp是四级重点

✔ 规则清楚
✔ 写起来反而不难


✅ 第三步:把所有商品按规则排好队 🚶‍♂️🚶‍♀️

sort(items, items + N, cmp);

🧒 想象:

商品们排成一条长队
👉最值得买的排在最前面


✅ 第四步:开始买买买 💸

int budget = M; int count = 0; for (int i = 0; i < N; i++) { if (items[i].price <= budget) { budget -= items[i].price; bought[count++] = items[i].name; } }

🧒 每一步发生什么?

  • 看第 i 个商品

  • 钱够不够?

    • ✔ 够 → 买!

    • ❌ 不够 → 跳过


✅ 第五步:按字典序输出商品名 📄

⚠️ 题目特别要求:

输出时,商品名要按字典序从小到大

所以我们再排一次:

sort(bought, bought + count);

🧠 四、完整参考程序

#include <iostream> #include <algorithm> #include <string> using namespace std; struct Item { string name; int price; int priority; }; bool cmp(const Item &a, const Item &b) { if (a.priority != b.priority) return a.priority < b.priority; if (a.price != b.price) return a.price < b.price; return a.name < b.name; } int main() { int M, N; cin >> M >> N; Item items[1005]; for (int i = 0; i < N; i++) { cin >> items[i].name >> items[i].price >> items[i].priority; } // 按购买规则排序 sort(items, items + N, cmp); string bought[1005]; int count = 0; int budget = M; // 按顺序购买 for (int i = 0; i < N; i++) { if (items[i].price <= budget) { budget -= items[i].price; bought[count++] = items[i].name; } } // 输出前按字典序排序 sort(bought, bought + count); for (int i = 0; i < count; i++) { cout << bought[i] << endl; } return 0; }

🧠 五、这道题在考什么?

🎯 核心能力清单

  • ✅ 创建结构体

  • ✅ 多条件排序(非常重要!)

  • sort + cmp的使用

  • ✅ 模拟现实规则

  • ✅ 字符串字典序


🎒 六、这道题的“买东西口诀”

🧠优先购买四步法

1️⃣ 商品排队
2️⃣ 从优先的买起
3️⃣ 钱不够就跳
4️⃣ 名字再排输出


🎉 总结

🌟 这是一道规则多,但逻辑非常清楚的好题
🌟 解决这个问题需要:

  • 思路拆分能力

  • 排序规则表达能力

  • 模拟真实问题的能力


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

支持FP8/AWQ/GPTQ量化导出!部署时模型体积缩小90%不丢精度

支持FP8/AWQ/GPTQ量化导出&#xff01;部署时模型体积缩小90%不丢精度 在大模型落地的今天&#xff0c;一个现实问题摆在所有开发者面前&#xff1a;我们训练出来的百亿、千亿参数模型&#xff0c;动辄占用数十GB显存&#xff0c;推理延迟高得难以接受。即便是在A100这样的高端…

作者头像 李华
网站建设 2026/1/1 17:43:02

YOLOFuse结合Typora写文档:高效记录实验过程与结果

YOLOFuse 结合 Typora&#xff1a;构建高效可复现的多模态检测实验流 在夜间监控、森林防火、自动驾驶等复杂场景中&#xff0c;单一可见光摄像头常常因光照不足或环境干扰而“失明”。红外成像虽能穿透黑暗&#xff0c;却缺乏纹理细节。如何让模型“既看得清热源&#xff0c;又…

作者头像 李华
网站建设 2026/1/1 17:42:11

YOLOFuse网盘直链下载助手推荐:快速分发大体积镜像文件

YOLOFuse网盘直链下载助手推荐&#xff1a;快速分发大体积镜像文件 在夜间监控、边境安防或自动驾驶感知系统中&#xff0c;单一可见光摄像头在低光照、雾霾或强逆光环境下常常“失明”。而红外成像虽能穿透黑暗&#xff0c;却缺乏纹理细节。如何让AI“看得更清”&#xff1f;…

作者头像 李华
网站建设 2026/1/1 17:39:39

YOLOFuseInfoQ专题采访:架构师眼中的多模态趋势

YOLOFuse&#xff1a;架构师眼中的多模态感知演进 在城市安防的夜间监控中&#xff0c;摄像头常常面临“看得见却认不清”的尴尬——画面里只有模糊的热影&#xff0c;传统基于RGB图像的目标检测模型在这种弱光环境下几乎失效。而在工业巡检场景下&#xff0c;烟雾弥漫的变电站…

作者头像 李华
网站建设 2026/1/1 17:38:29

数据分析能力在开源AI智能名片链动2+1模式多商户商城小程序中的价值与应用研究

摘要&#xff1a;本文聚焦于数据分析能力在开源AI智能名片链动21模式多商户商城小程序中的应用价值。通过分析该模式的特点与运营需求&#xff0c;深入探讨如何入门数据分析、掌握有效方法以及成为优秀数据分析师&#xff0c;并阐述在该特定场景下数据分析对提升运营效率、用户…

作者头像 李华
网站建设 2026/1/1 17:37:43

YOLOFuse JavaScript前端控制台调试技巧分享

YOLOFuse JavaScript前端控制台调试技巧分享 在智能监控系统日益普及的今天&#xff0c;一个常见的挑战是&#xff1a;如何让非算法背景的开发者也能快速验证多模态目标检测模型的效果&#xff1f;尤其是在夜间安防、火灾搜救这类依赖红外视觉的场景中&#xff0c;传统纯Python…

作者头像 李华