《枚举算法 “翻译官”:用 enum class 给 “游游的礼盒” 算分》
在算法题中“枚举所有可能” 是一种直观且有效的解题思路但直接用数字表示状态或选项时代码往往显得晦涩难懂。比如 “游游的礼盒” 这类问题需要枚举礼盒中不同物品的组合并计算最大值若用0、1、2代表物品很容易混淆逻辑。今天我们就用 C 的强类型枚举enum class来 “翻译” 枚举逻辑让代码既安全又易读。一、先看 “游游的礼盒” 问题枚举所有组合求最大值假设题目是这样的游游有一个礼盒里面可以放 3 件物品每件物品只能是 “金币”“宝石” 或 “药水”它们的分数分别是 2 分、5 分、3 分。求礼盒中 3 件物品的最大可能总分。核心思路枚举 3 件物品的所有可能组合计算每种组合的分数取最大值。传统写法会用0、1、2代表三种物品但用枚举类型能让代码 “说人话”。二、用枚举类型 “翻译” 物品从数字到语义首先用enum class定义物品类型把抽象的数字 “翻译” 成具体的语义cpp运行// 用强类型枚举定义物品每个枚举值对应一种物品 enum class Item { Coin, // 金币2分 Gem, // 宝石5分 Potion // 药水3分 };这样一来代码中不会再出现0、1、2而是直接用Item::Coin“点名” 物品可读性瞬间提升。三、枚举所有组合用枚举变量替代数字循环接下来我们需要枚举 3 件物品的所有可能组合。传统写法会用 3 层for循环遍历0-2现在直接用枚举变量循环配合显式转换控制范围cpp运行#include iostream using namespace std; // 定义物品枚举显式指定底层类型为int方便循环 enum class Item : int { Coin, // 0 Gem, // 1 Potion, // 2 Count // 3作为“哨兵值”标记枚举总数 }; // 根据物品类型获取分数 int getScore(Item item) { switch (item) { case Item::Coin: return 2; case Item::Gem: return 5; case Item::Potion: return 3; default: return 0; // 不会触发仅为编译通过 } } int main() { int maxScore 0; // 枚举第一件物品从Coin到Potion for (int i 0; i static_castint(Item::Count); i) { Item item1 static_castItem(i); // 枚举第二件物品 for (int j 0; j static_castint(Item::Count); j) { Item item2 static_castItem(j); // 枚举第三件物品 for (int k 0; k static_castint(Item::Count); k) { Item item3 static_castItem(k); // 计算当前组合分数 int current getScore(item1) getScore(item2) getScore(item3); // 更新最大值 if (current maxScore) { maxScore current; } } } } cout 最大总分 maxScore endl; // 输出15 return 0; }四、为什么用枚举类型更好对比传统的 “数字枚举”强类型枚举的优势一目了然1.逻辑 “可视化”避免混淆如果直接用数字3 层循环的i、j、k代表什么111又对应什么组合而用Item::Gem一眼就知道是 “宝石”GemGemGem的组合逻辑清晰可见。2.强类型检查减少 bug如果不小心把Item::Coin写成4编译器会直接报错而传统数字枚举会默默接受错误值导致逻辑漏洞。3.扩展性强方便维护如果题目新增 “钻石” 物品只需在枚举中加一行Diamond修改getScore函数即可无需改动循环逻辑 —— 因为循环依赖的是Item::Count这个 “哨兵值”自动适配枚举总数。五、总结枚举类型是算法的 “语义化工具”在 “游游的礼盒” 这类枚举问题中枚举类型的作用远不止 “给数字起名字”它更像一个 “语义化工具”把抽象的枚举逻辑 “翻译” 成人类能快速理解的语言同时通过强类型检查保障代码正确性。谢谢

相关新闻

DIY 7英寸副屏:低成本扩展桌面空间,打造专属信息看板

DIY 7英寸副屏:低成本扩展桌面空间,打造专属信息看板

1. 项目缘起:为什么需要一个“副屏”?作为一名长期与代码、设计稿和多个文档窗口打交道的开发者,我几乎每天都在和屏幕空间不足作斗争。主显示器上,IDE、浏览器、终端、通讯软件、设计工具挤作一团,频繁的窗口切换不仅…

2026/8/1 14:42:16 阅读更多 →
ModTheSpire终极指南:5分钟为《杀戮尖塔》开启无限模组世界

ModTheSpire终极指南:5分钟为《杀戮尖塔》开启无限模组世界

ModTheSpire终极指南:5分钟为《杀戮尖塔》开启无限模组世界 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 你是否厌倦了《杀戮尖塔》一成不变的玩法?想添加新角…

2026/8/1 14:41:12 阅读更多 →
航天术语翻译:从精确性到工程实践的挑战与流程

航天术语翻译:从精确性到工程实践的挑战与流程

1. 从“黑话”到“行话”:为什么专业术语翻译是航天的命门在航空航天这个领域待久了,你会发现,工程师和技术人员之间交流,用的几乎是一套自成体系的“黑话”。从“静不稳定”到“热障”,从“比冲”到“羽流”&#xff…

2026/8/1 14:41:12 阅读更多 →

最新新闻

18.5英寸FHD LCD屏驱动与应用全攻略:从参数解析到实战组装

18.5英寸FHD LCD屏驱动与应用全攻略:从参数解析到实战组装

1. 项目概述:一块18.5英寸FHD LCD屏的深度探索最近在折腾一个桌面信息显示终端,核心需求是找一块尺寸适中、分辨率够用、接口友好且价格合理的显示屏。市面上各种“洋垃圾”工控屏、拆机屏琳琅满目,但坑也不少。最终,我把目光锁定…

2026/8/1 15:23:32 阅读更多 →
大语言模型参数Temperature 与 Top_p

大语言模型参数Temperature 与 Top_p

Temperature 与 top_p 配合核心原则:‌同向调节保风格(低 - 低求稳、高 - 高求创),避免极端互斥组合;先定 Temperature 控“胆量”,再调 top_p 控“视野”‌ 。‌‌核心协同机制二者分阶段作用于采样流程&a…

2026/8/1 15:23:32 阅读更多 →
激光测距模块M03——激光测距仪方案

激光测距模块M03——激光测距仪方案

在建筑测绘、家装测量、工业检测、智能设备配套等场景中,小型激光测距模组凭借便携、精准、易集成的优势,成为行业主流传感配件。M03模外形尺寸为46.45mm29.50mm15.80mm,整体结构规整。一、核心测距性能1.量程灵活可选,最远支持12…

2026/8/1 15:23:32 阅读更多 →
视频号如何稳定获取推荐曝光,改善账号流量波动问题

视频号如何稳定获取推荐曝光,改善账号流量波动问题

现在有很多做视频号的创作者,基本上都会碰到流量不稳定、作品曝光很低的问题。其实大部分时候,视频没流量并不是内容做得差,主要还是因为自己不太懂平台的推送规则,平时运营账号的方式也有很多不规范的地方。不用总是想着做出爆款…

2026/8/1 15:23:32 阅读更多 →
P10周:Pytorch实现车牌识别

P10周:Pytorch实现车牌识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 学习目的: 自定义一个MyDataset加载车牌数据集并完成车牌识别 一、 前期准备 关于环境 语言环境:Python3.13编译器:vsCo…

2026/8/1 15:23:32 阅读更多 →
X推荐算法开源技术解析与工程实践

X推荐算法开源技术解析与工程实践

1. X推荐算法开源的技术背景与行业影响推荐算法作为互联网内容分发的核心技术,近年来经历了从闭源到开源的重大转变。X算法的开源标志着推荐系统领域进入了一个新阶段——头部企业开始将经过海量用户验证的核心算法向社区开放。这种转变背后是三个关键因素&#xff…

2026/8/1 15:22:32 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →