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

算法学习日记 | 枚举

🧠 算法学习日记 | 今天我用「枚举」解了三道题,原来简单也能很优雅!

大家好,我是你们的算法学习搭子 👋
今天继续我的算法入门之旅,重点练习了**枚举(Brute Force)**这一基础但极其重要的方法。

很多人觉得“枚举=暴力=低效”,但其实,在数据规模可控的情况下,枚举是最可靠、最直观的解题方式。更重要的是——它能帮你快速验证思路是否正确!

今天我完整做了三道题,每一道都坚持用最朴素的枚举方法解决。下面我把题目原文我的原始代码原封不动贴出来,不做任何删减或美化,只为真实记录学习过程。


🔹 题目一:特别数的和

题目描述
小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。
请问,在 1 到 n 中,所有这样的数的和是多少?

输入描述
输入格式:
输入一行包含一个整数 $ n((1 \leq n \leq 10^4 $)。

输出描述
输出一行,包含一个整数,表示满足条件的数的和。

输入输出样例

输入 49 输出 574

运行限制

  • 最大运行时间:1s
  • 最大运行内存:256M

✅ 我的代码

#include<iostream>usingnamespacestd;boolf(intx){while(x){inty=x%10;if(y==2||y==0||y==1||y==9){returntrue;}x/=10;}returnfalse;}intmain(){intn;cin>>n;intsum=0;for(inti=1;i<=n;i++){if(f(i)){sum+=i;}}cout<<sum;return0;}

🔹 题目二:反倍数

题目描述
给定三个整数 $ a, b, c $,如果一个整数既不是 $ a $ 的整数倍也不是 $ b $ 的整数倍还不 是 $ c $ 的整数倍,则这个数称为反倍数。
请问在 1 至 $ n $ 中有多少个反倍数。

输入描述
输入的第一行包含一个整数 $ n $。
第二行包含三个整数 $ a, b, c,相邻两个数之间用一个空格分隔。其中,,相邻两个数之间用一个空格分隔。 其中,,相邻两个数之间用一个空格分隔。其中,1 \leq n \leq 1000000,,1 \leq a \leq n,,1 \leq b \leq n,,1 \leq c \leq n $。

输出描述
输出一行包含一个整数,表示答案。

输入输出样例

输入 36 2 3 6 输出 10

样例说明
以下这些数满足要求:1, 5, 7, 11, 13, 17, 19, 23, 25, 29。

运行限制

  • 最大运行时间:1s
  • 最大运行内存:256M

✅ 我的代码

#include<iostream>usingnamespacestd;inta,b,c;boolf(intx){if(x%a!=0&&x%b!=0&&x%c!=0)returntrue;elsereturnfalse;}intmain(){intn;cin>>n;cin>>a>>b>>c;intcount=0;for(inti=1;i<=n;i++){if(f(i)){count++;}}cout<<count;return0;}

🔹 题目三:找到最多的数

问题描述
在一个 $ n \times m $ 的矩阵中,有一个数字出现了超过一半的次数,请设计一个高效算法找到这个数字。

输入格式
输入第一行包含两个整数 $ n $ 和 $ m,表示矩阵的大小(,表示矩阵的大小(,表示矩阵的大小(1 \leq n, m \leq 10^3 $)。
接下来 $ n $ 行,每行包含 $ m $ 个正整数,表示矩阵中的元素。

输出格式
输出一个整数,表示矩阵中出现次数超过一半的数字。

样例输入

3 3 1 2 3 2 2 2 1 2 2

样例输出

2

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M
PyPy33s256M
Go3s256M
JavaScript3s256M

✅ 我的代码

#include<iostream>#include<bits/stdc++.h>usingnamespacestd;map<int,int>mp;intmain(){intm,n;cin>>m>>n;for(inti=1;i<=n*m;i++){inta;cin>>a;mp[a]++;}for(constauto&i:mp){if(2*i.second>n*m){cout<<i.first;}}return0;}

🌟 我的思考

这三道题,我全部使用了枚举的思想:

  • 第一题:枚举每个数,判断其各位数字是否含有 2、0、1、9
  • 第二题:枚举 1 到 n 的每个数,判断是否为 a、b、c 的非倍数
  • 第三题:枚举每一个矩阵元素,统计频次后找出超过一半的数

虽然没有使用高级技巧(如数学公式、位运算、投票算法等),但枚举让我把问题拆解得非常清晰。只要逻辑正确,就能通过测试。

而且我发现:很多题目看似复杂,其实核心就是“遍历 + 判断”。当你能把枚举写对,就已经赢了一半。


✅ 总结

  • 枚举不是“低端”,而是“基础”
  • 题目描述要读准,边界条件要抠细
  • 代码可以简陋,但逻辑必须严谨
  • 先求正确,再求高效

如果你也在刷算法题,不妨试试今天这三道题,用最直白的枚举方法做一遍。
有时候,慢一点,反而更快。

欢迎在评论区贴出你的解法,我们一起交流进步!👇


http://www.cnnetsun.cn/news/837299.html

相关文章:

  • 学霸同款9个AI论文平台,助你轻松搞定继续教育论文!
  • 聚划算!CNN-GRU、CNN、GRU三模型多特征分类预测对比Matlab实现
  • 【毕业设计】基于springboot的服装制造有限公司综合管理系统(源码+文档+远程调试,全bao定制等)
  • XML Schemas 简介
  • 基于机器学习LASSO回归逻辑回归算法对心脏衰竭病症预测分析完整代码+报告(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 什么是灰度发布(Gray Release)?
  • 西门子S7-1200控制5轴伺服程序加维纶触摸屏画面案例。 1.PTO伺服轴脉冲定位控制功能应...
  • 浙大突破:经验学习提升AI智能体现实世界物理认知
  • 中山大学等九校联手突破:AI实现软件bug自动侦测与修复
  • 计算机Java毕设实战-基于AI功能+大数据可视化分析+Spark的买菜推荐系统设计与实现基于spark的买菜推荐系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Linux嵌入式视频流加速接入V4L2:突破多路摄像头的帧率瓶颈
  • 从理论到代码:实现AI原生应用中的知识抽取
  • 【课程设计/毕业设计】基于大数据Spark的买菜推荐系统设计与实现基于spark的买菜推荐系统设计与实现【附源码、数据库、万字文档】
  • 大数据领域Hive的索引机制与性能提升
  • 免费降AI工具有用吗?实测5款告诉你哪个真能用
  • springboot家教平台网站vue
  • ADC--模数转换器
  • Java计算机毕设之基于springboot的城市轨道交通安全管理系统基于SpringBoot的都市轨道交通综合服务平台(完整前后端代码+说明文档+LW,调试定制等)
  • SCI投稿前必备:5款英文论文降AI工具横评推荐
  • Java全栈工程师的面试实战:从基础到微服务
  • 前后端分离Spring Boot装饰工程管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • Katalon Studio快捷键使用指南
  • 计算机毕业设计springboot高校电动车充电桩管理系统 基于SpringBoot架构的高校校园智慧充电设施运维服务平台 SpringBoot驱动的高校电动车辆能源补给与设备监控管理系统
  • 面了个腾讯30k出来的,让我见识到什么叫“精通MySQL调优”
  • Java计算机毕设之基于springboot的汽车维修保养服务信息系统基于Java springboot4s店车辆管理系统车辆预约保养维修(完整前后端代码+说明文档+LW,调试定制等)
  • 广东老板:说真的!我家白裙子靠6张图,在夏天卖断货了!
  • 如何将照片从三星传输到Mac ?
  • 【课程设计/毕业设计】基于springboot超市进销存系统基于springboot的超市仓库管理系统【附源码、数据库、万字文档】
  • 计算机Java毕设实战-基于springboot的超市仓库管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Java毕设选题推荐:基于springboot的超市仓库管理系统基于springboot超市进销存系统【附源码、mysql、文档、调试+代码讲解+全bao等】