2026/1/10 12:22:14
网站建设
项目流程
做淘宝主要看哪些网站有哪些内容,西安发布,同城分类信息网站,辽宁省建设机械协会官方网站一、先看原题#xff1a;二、题目解析#xff1a;1、#x1f4d6; 故事背景#xff08;先把题目“变简单”#xff09;小 A 有一些钱 #x1f4b0;#xff0c;
他走进了一家商店 #x1f3ec;#xff0c;
商店里有 很多商品#xff0c;每个商品都有#xff1a;二、题目解析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️⃣ 名字再排输出 总结 这是一道规则多但逻辑非常清楚的好题 解决这个问题需要思路拆分能力排序规则表达能力模拟真实问题的能力