当前位置: 首页 > news >正文

俗称蓝桥杯之枚举(二)

一、基础枚举(单循环)

1. 反倍数 / 不能被整除的数

题目:求 1~n 中,不是 a、b、c 倍数的数有多少个。

#include <iostream> using namespace std; int main() { int n, a, b, c, cnt = 0; cin >> n >> a >> b >> c; for (int i = 1; i <= n; ++i) { if (i % a && i % b && i % c) cnt++; } cout << cnt; return 0; }

枚举要点:遍历所有数 → 判断条件 → 计数。


2. 数字统计(统计 1~n 中 2 出现次数)

题目:求 1~n 中数字2一共出现多少次。

#include <iostream> using namespace std; int main() { int n, cnt = 0; cin >> n; for (int i = 1; i <= n; ++i) { int x = i; while (x) { if (x % 10 == 2) cnt++; x /= 10; } } cout << cnt; return 0; }

枚举要点:每个数拆位判断。


二、双重 / 三重循环枚举

3. 百钱买百鸡(经典三元枚举)

题目:公鸡 5 元 1 只,母鸡 3 元 1 只,小鸡 1 元 3 只。用 100 元买 100 只鸡,求所有方案。

#include <iostream> using namespace std; int main() { for (int x = 0; x <= 20; ++x) // 公鸡 for (int y = 0; y <= 33; ++y) { // 母鸡 int z = 100 - x - y; // 小鸡 if (5*x + 3*y + z/3 == 100 && z%3 == 0) { cout << x << " " << y << " " << z << endl; } } return 0; }

枚举技巧

  • 只枚举公鸡、母鸡
  • 小鸡由总数推出,减少一层循环

4. 三位数水仙花数

题目:100~999 中,各位立方和 = 本身。

#include <iostream> using namespace std; int main() { for (int i = 100; i < 1000; ++i) { int a = i/100, b = i/10%10, c = i%10; if (a*a*a + b*b*b + c*c*c == i) cout << i << endl; } return 0; }

三、日期 / 字符串枚举(高频)

5. 回文日期(蓝桥杯最爱)

题目:求 8 位数字日期中,是回文数的日期。如 20200202 → 正反一样。

#include <iostream> #include <string> using namespace std; bool isPalin(string s) { return s == string(s.rbegin(), s.rend()); } int main() { // 枚举年份,构造回文日期 for (int y = 1000; y <= 9999; ++y) { string s = to_string(y); string mon = s.substr(3,1) + s.substr(2,1); string day = s.substr(1,1) + s.substr(0,1); string date = s + mon + day; if (isPalin(date)) { cout << date << endl; } } return 0; }

枚举技巧:只枚举年份,后半直接反转生成,速度极快


四、二进制枚举(子集枚举)

6. 子集和 / 选数

题目:n 个数,判断是否能选出若干个和为 S。(n ≤ 20)

#include <iostream> using namespace std; int a[25], n, S; int main() { cin >> n >> S; for (int i = 0; i < n; ++i) cin >> a[i]; for (int mask = 0; mask < (1 << n); ++mask) { int sum = 0; for (int i = 0; i < n; ++i) if (mask & (1 << i)) sum += a[i]; if (sum == S) { cout << "YES" << endl; return 0; } } cout << "NO"; return 0; }

适用:n ≤ 20,2²⁰ ≈ 1e6 完全没问题。


五、排列枚举(递归枚举)

7. 全排列

题目:输出 1~n 的全排列。

#include <iostream> #include <algorithm> using namespace std; int main() { int a[] = {1,2,3,4}; int n = 4; do { for (int i = 0; i < n; ++i) cout << a[i] << " "; cout << endl; } while (next_permutation(a, a+n)); return 0; }

蓝桥杯直接用next_permutation最稳。


六、枚举优化经典题

8. 最大子段和(暴力版)

题目:求一段连续子数组和最大。

#include <iostream> #include <algorithm> using namespace std; int a[1005]; int main() { int n, ans = -1e9; cin >> n; for (int i = 0; i < n; ++i) cin >> a[i]; for (int l = 0; l < n; ++l) { int sum = 0; for (int r = l; r < n; ++r) { sum += a[r]; ans = max(ans, sum); } } cout << ans; return 0; }

n ≤ 1000 暴力完全 AC。


七、枚举万能模板(直接背)

for (枚举所有可能) { if (满足题目条件) { 记录答案 / 输出 / 计数 } }

蓝桥杯不会做就枚举,小数据一定能拿分。

http://www.jsqmd.com/news/769514/

相关文章:

  • 初次接触 Taotoken 平台在模型广场选型与试用的直观感受
  • 别再死磕AlphaGo了!用Python+PyTorch从零撸一个中国象棋AI(保姆级MCTS教程)
  • Blender建模效率翻倍:善用这8个拓扑技巧,让你的Subdivision Surface不再‘糊’
  • 5分钟快速上手OBS AI背景移除插件:无需绿幕的虚拟背景终极解决方案
  • 微信聊天记录备份恢复终极指南:如何永久保存你的珍贵回忆?
  • Hi9204:70V高耐压、0.6A稳定输出,SOT23-6降压芯片—聚能芯半导体
  • 2026年专业靠谱!南京除甲醛公司优质推荐来啦 - 速递信息
  • 当ZYNQ的硬件SPI不够用时:用EMIO GPIO模拟多路SPI从机的完整方案
  • VSCode AI编程团队编排:Mysti扩展的多模型协作与实战配置
  • TFT Overlay:云顶之弈玩家的智能战术助手,3分钟提升决策效率80%
  • Raspberry Pi短缺解析与替代方案指南
  • RPGMakerMZ游戏引擎 地图角色顶部显示称号
  • OpenClaw:基于智能代理与可验证收据的软件供应链安全实践
  • 2026年装修成品保护材料源头工厂一站式采购完全指南|地膜、门套、护角、临时马桶 - 企业名录优选推荐
  • 保姆级避坑指南:用MIM搞定MMSegmentation 2.0.0完整安装与验证(附常见报错解决)
  • 基于Rust的微信机器人框架:高性能事件驱动架构与自动化实践
  • 信息系统项目管理师-项目成本管理-知识点及考点预测
  • PortProxyGUI:Windows系统上最简单直观的端口转发管理工具
  • 天猫享淘卡回收操作指南详解 - 畅回收小程序
  • Apache-Superset详细安装-Apache第一大开源项目
  • STM32F103做FFT?实测用CMSIS-DSP库比手写快多少(附标准库移植踩坑记录)
  • word转pdf(高保真图片)
  • 通过 Python SDK 快速接入 Taotoken 并调用聊天补全接口
  • 基于MCP协议构建AI助手与Google Workspace的安全自动化集成
  • 高效iPhone USB网络共享驱动解决方案:自动化安装深度解析与配置指南
  • 徐州黄金变现时效榜:福正美把均值线甩成了尾巴 - 福正美黄金回收
  • 2026西安口碑好系统门窗厂商:断桥铝、铝合金门窗品牌推荐与技术解读 - 深度智识库
  • PCB/PCBA板厚测试用什么设备好?
  • PvZ Toolkit:5大核心功能让你的植物大战僵尸体验全面升级
  • Clawcord:基于Discord与OpenRouter打造个人AI助手,实现工作流自动化