资讯详情

PAT乙级1092题解:数组统计与最受欢迎月饼口味

📅 2026/11/4 17:21:37 | 华诺云谱 👁 阅读
PAT乙级1092题解:数组统计与最受欢迎月饼口味
1. PAT乙级1092题解找出最受欢迎的月饼口味这道题目来自PAT乙级考试的1092题主要考察数组的基本操作和简单的统计计算。题目背景设定在一个月饼销售场景要求我们统计每种口味的月饼总销量并找出最受欢迎的口味。1.1 题目理解与需求分析题目大意是有N种不同口味的月饼M家门店参与了销售统计。每家门店都会上报每种口味的销售数量。我们需要计算每种口味在所有门店的总销量找出销量最高的那个数值输出这个最高销量值输出所有达到这个销量的口味编号按输入顺序输入格式第一行两个整数N和M1≤N,M≤1000接下来M行每行N个整数表示该门店各口味的销量输出格式第一行输出最大销量值第二行输出所有达到最大销量的口味编号按输入顺序空格分隔1.2 解题思路与算法选择这道题的核心在于累加统计我们需要对每种口味在各个门店的销量进行累加找最大值在所有累加结果中找出最大的那个值输出结果按要求格式输出最大值和对应的口味编号选择的数据结构使用一个大小为N1的数组或vector来存储每种口味的累计销量数组索引直接对应口味编号1-based算法复杂度时间复杂度O(M×N)因为需要遍历所有门店的所有口味空间复杂度O(N)只需要存储各口味的累计销量2. 代码实现详解2.1 基础框架与输入处理#includebits/stdc.h using namespace std; int main() { int n, m, num; cin n m; vectorint v(n 1);这部分代码做了以下工作包含常用头文件bits/stdc.h竞赛常用实际工程不推荐使用标准命名空间std定义主函数读取两个整数n口味数量和m门店数量创建大小为n1的vector索引1-n对应各口味注意这里使用n1是为了让下标直接对应口味编号1-based避免0号元素的混淆。2.2 数据累加处理for(int i 0; i m; i) { for(int j 1; j n; j) { cin num; v[j] num; } }这段代码实现了外层循环遍历所有m家门店内层循环遍历所有n种口味读取当前门店当前口味的销量num将该销量累加到对应口味的累计和中技巧使用运算符直接累加避免了额外的中间变量。2.3 找出最大值int maxnum -1; for(int i 1; i n; i) maxnum max(maxnum, v[i]); cout maxnum endl;这部分逻辑初始化maxnum为-1确保任何销量都会大于它遍历所有口味使用max函数更新最大值输出找到的最大值注意maxnum初始值设为-1是安全的因为题目保证销量是非负整数。2.4 输出最大销量口味编号int flag 0; for(int i 1; i n; i) if(v[i] maxnum) { if(flag 1) cout ; flag 1; cout i; }这段代码处理了使用flag标记是否是第一个输出的编号遍历所有口味检查是否等于最大值如果是第一个输出的编号不输出前导空格后续编号前都输出一个空格直接输出口味编号i技巧使用flag控制空格输出避免了末尾多余空格的问题。3. 代码优化与注意事项3.1 边界情况处理虽然题目给出了数据范围但实际编码时应考虑当n1时的特殊情况所有口味销量相同的情况最大销量为0的情况虽然题目没说是否可能3.2 输入输出优化对于大规模数据虽然本题n,m≤1000可以使用更快的输入方式如scanf代替cin关闭同步流ios::sync_with_stdio(false);优化后的输入部分ios::sync_with_stdio(false); cin.tie(0); int n, m; cin n m;3.3 变量命名建议原代码使用v作为数组名不够直观可以改为vectorint totalSales(n 1);其他变量也可以更具描述性num → currentSalemaxnum → maxSalesflag → isFirstOutput4. 常见问题与调试技巧4.1 易错点分析数组大小错误忘记是n1导致越界索引错误使用0-based还是1-based要统一空格控制最后一个编号后不能有多余空格初始化问题maxnum初始值不够小可能导致错误4.2 测试用例设计建议测试以下情况常规情况3 2 1 2 3 4 5 6输出应为9 3多个最大销量4 3 1 2 3 4 4 3 2 1 1 1 1 1输出应为6 1 2边界情况1 1 100输出应为100 14.3 调试技巧打印中间结果在累加后打印v数组检查使用小数据测试先验证简单情况检查循环边界特别是从1开始还是0开始使用调试器单步执行观察变量变化5. 算法扩展与变种思考5.1 类似问题找出销量前k名的口味计算每种口味的平均销量找出销量超过某个阈值的口味5.2 性能优化如果数据量很大如n,m1e5可以使用并行计算处理不同门店的数据考虑使用更高效的数据结构分批处理输入数据5.3 实际应用扩展这种累加统计模式可以应用于电商商品销量统计用户行为分析多维度数据聚合在实际项目中类似的统计需求很常见掌握这种基础模式非常重要。我建议初学者不仅要能写出正确代码还要理解每个步骤的意义和可能的变种这样才能真正掌握算法思想。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑