算法学习日记 | 枚举

蓝桥杯 高斯日记 C语言巧解(全网最简单) 蓝桥杯 高斯日记 C语言巧解(全网最简单) 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。 在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:1791年12月15日。 高斯获得博士学位的那天日记上标着:8113 请你算 阅读详情

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

大家好,我是你们的算法学习搭子 👋
今天继续我的算法入门之旅,重点练习了**枚举(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>
using namespace std;

bool f(int x){
    while(x){
        int y=x%10;
        if(y==2 || y==0 || y==1 || y==9){
            return true;
        }
        x/=10;
    }
    return false;
}

int main()
{
    int n;
    cin>>n;
    int sum=0;
    for(int i=1;i<=n;i++){
        if(f(i)){
            sum+=i;
        }
    }
    cout<<sum;
    return 0;
}

🔹 题目二:反倍数

题目描述
给定三个整数 $ 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>
using namespace std;

int a,b,c;
bool f(int x){
    if(x%a!=0 && x%b!=0 && x%c!=0)
        return true;
    else
        return false;
}

int main()
{
    int n;
    cin>>n;
    cin>>a>>b>>c;
    int count=0;
    for(int i=1;i<=n;i++){
        if(f(i)){
            count++;
        }
    }
    cout<<count;
    return 0;
}

🔹 题目三:找到最多的数

问题描述
在一个 $ 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>
using namespace std;

map<int,int> mp;

int main()
{
    int m,n;
    cin>>m>>n;
    for(int i=1;i<=n*m;i++){
        int a;
        cin>>a;
        mp[a]++;
    }
    for(const auto &i:mp){
        if(2*i.second>n*m){
            cout<<i.first;
        }
    }
    return 0;
}

🌟 我的思考

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

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

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

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


✅ 总结

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

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

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


数据清洗(Data Cleansing) 数据清洗(Data Cleansing)是指对数据进行处理和纠错,以去除或修复数据集中存在的错误、不致、不完整和冗余的数据,从而使数据更加准确、可靠和有用。数据清洗是数据处理和数据分析中一个非常重要的步骤,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。数据清洗是一个重要的过程,它可以帮助我们提高数据的质量,从而提高数据分析和机器学习的准确性和可靠性。在实际应用中,我们可以使用一些工具和技术来实现数据清洗,例如 Pandas、NumPy 和 OpenRefine 等。通过数据清洗, 阅读详情

相关推荐

Matlab路径文件pathdef.m可能为只读文件修改方法

找到MATLAB目录下的bin这个文件夹,直接改这个文件夹的权限(之前试过改pathdef.m的权限,不好用)如果到这里重新导入还是不行,从官网重新下载需要的安装包,可能是你的安装包出了问题。(Win11系统,matlab版本为2022b)编辑——添加——在输入对象名称来选择中输入everyone。重启matlab,以管理员身份运行。并修改其他已有的权限,都给它。

yqc1123的博客 1万+

算法学习日记(一)枚举

一、定义 枚举是基于逐个尝试答案的一种问题求解策略 二、算法 依次遍历每个值,直到找到问题求解答案 三、例题 1、完美立方 确定各个变量的范围: a:[2,N] b:[2,a-1] c:[b,a-1] d:[c,a-1] 确定了各个变量的范围,避免了不必要的运算,只需要使用四个for循环,就能求出问题解了, 题解代码如下: public class Ex_1 { public static void main(String[] args) { Scanner in = new Sc

qq_43419801的博客 310

手把手教你编写I2C读写EEPROM代码(驱动层实现)

从底层寄存器配置到时序控制,详解如何编写可移植的I2C读写EEPROM代码,覆盖起始信号、地址帧、数据收发及ACK应答等关键环节,确保在STM32、ESP32等主流平台稳定运行,真正落地i2c读写eeprom代码需求。

weixin_35756130的博客 508

Leetcode基础算法-枚举算法(穷举法)

本文为Datawhale学习9月份Leetcode基础算法学习日记

machenme的博客 633

在带有Intel Arc GPU的Windows上安装IPEX-LLM

本文将介绍在 Intel Arc GPU 环境下安装 IPEX-LLM。

wux_labs的博客 1636

Android 跨进程通信-(一)Binder概念引入

前言 主要对Android中的跨进程通信进行总结下,这篇先梳理下里面的涉及的一些概念 一 多进程 1.进程与线程 进程:系统中正在运行的一个应用程序,某个程序一旦运行就是一个进程,是资源分配的最小单位; 线程:程序执行的最小单位,包含在进程中,一个进程可以包含多个线程。 2.Android应用中的多进程 (1)dalivk虚拟机 Android系统的底层任务管理以及驱动都是基于Linux系统。一个Android系统其实就是一个Linux系统,通过adb shell进入连接的手机,就可以看到Li

nihaomabmt的专栏 1103

贾程阳的摆烂日记之枚举算法

一、枚举算法 定义:基于逐个尝试答案的一种问题策略,它的核心思想就是枚举所有可能。 作为基本的算法,枚举没有什么固定模板或者说格式,在解题时只需找到枚举的对象、范围和判定条件,之后逐一验证枚举的对象,从而找到答案。 在实际解题过程中,真正需要思考的是一个算法优化问题,即对枚举算法的优化,有时,一个简单的优化可以减少很多运算时间,从而减少代码的复杂度。这个算法优化,才是思考的关键。 接下来通过几道题,演示枚举算法的构造,问题实现过程以及算法优化等问题。 1、完美立方 形如a^3= b^3 + c^

m0_61082981的博客 327

算法学习日记

carl算法学习日记一.回溯算法初探1.什么是回溯法2.回溯算法效率3.回溯算法解决的问题4.如何理解回溯算法5.模板 一.回溯算法初探 1.什么是回溯法 回溯算法是一种暴力的枚举算法。二叉树的递归算法即是回溯算法。递归和回溯指的是同一个东西。 2.回溯算法效率 回溯本质上是枚举算法,并不高效。某些问题之所以使用回溯算法是因为没得选,只能进行暴力求解。最多进行剪枝优化。 3.回溯算法解决的问题 回溯法,一般可以解决如下几种问题: 组合问题:N个数里面按一定规则找出k个数的集合 排列问题:N个数按一定规则全排

qq_45487715的博客 804

【网络安全】SSRF漏洞讲解

SSRF漏洞讲解一、初识SSRF漏洞1.定义2.产生原理3.会导致的危害4.常见产生SSRF的地方5.常见缺失函数二、SSRF漏洞利用1.函数(1) file_get_contents(2)fsockopen()(3) curl_exec()2.协议(1)file协议(2)http协议(3)dict协议(4)gopher协议三、绕过1.绕过方式(1)检查IP是否为内网IP(2)Host获取与DNS绕过(3)通过各种协议(4)利用URL解析器滥用问题四、修复修复方案五、小结 一、初识SSRF漏洞 1.定义

你在看屏幕的同时,屏幕也在注视着你 3181

辐射制冷无规散射结构非球形散射体的结构优化与设计准则

本文针对辐射制冷材料中非球形散射体的光散射特性开展研究,提出了一种基于体积散射截面和不对称因子的综合评价方法。通过建立简化模型分析球体、圆柱体、长方体等六种几何形状在太阳波段的散射性能,发现金字塔形和圆锥形具有更强的后向散射能力。研究创新性地提出"反射因子SR=S(1-g)"这一评价参数,该参数与宏观反射率高度相关,为非球形散射体的优化设计提供了定量依据。仿真结果表明,合理选择散射体形状可显著提升辐射制冷材料的太阳反射率,为实现高效被动制冷提供了新的结构设计思路。

huanghm88的专栏 79

算法日记 | 暴力枚举

本文介绍了暴力枚举算法在解决实际问题中的应用,通过三个经典题目展示了暴力枚举的巧妙之处。 首先在统计方形问题中,通过数学优化避免四重循环,计算矩形和正方形的数量;其次在烤鸡问题中,利用十重循环枚举所有可能的配料组合;最后在三连击问题中,使用集合检测数字是否重复,确保比例正确。 这些案例表明,暴力枚举虽然简单,但在特定条件下(如变量少、范围小)可以高效解决问题,是算法竞赛中的重要基础技巧。

在读大学生 591

红绿灯背后的数学:如何用Java算出“黄金绿灯时间“?

本文探讨了城市交通信号灯配时优化的数学原理与Java实现方法。文章首先分析了信号灯配时不合理导致的交通问题,指出精确计算绿灯时长的重要性。核心内容包括:1)基于M/M/1排队模型建立车流量数学模型,通过优化算法最小化总等待时间;2)使用Java实现信号灯优化控制器,采用梯度下降法动态调整绿灯时长。文中提供了完整的Java代码实现,包括信号灯控制器基类和优化控制器类,采用原子类保证线程安全,并详细解释了关键算法原理和实现细节。该方案可为城市智能交通系统提供理论支持和技术实现参考。

墨夶的博客 1345

算法学习日记 | 模拟

模拟 ≠ 暴力,它是过程还原要清晰理解问题的每一步操作可以用辅助数组避免状态污染(如灌溉题)枚举 + 判断 + 循环 = 模拟的核心三件套先求正确,再求高效如果你也在刷算法题,不妨试试今天这三道题,用最直白的模拟方法做一遍。有时候,慢一点,反而更快。欢迎在评论区贴出你的解法,我们一起交流进步!👇。

在读大学生 693

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

菜鸡提升日记——递归枚举

枚举 题目来自acwing 1.递归实现指数型枚举 1.保证答案中升序,需要保证备选数组中数字为升序,题目为自然数1-n不用考虑排序,但是需要一个start来确定每次放入答案数组中的数字从多少开始。 2.输出每一种方案,需要设立0-n个边界值(n为空集) #include<bits/stdc++.h> using namespace std; int ans[20]; int vis[20]; int n; void dfs(int pos,int start,int cur)//star

aMonstere的博客 281

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

蓝桥杯刷题日记

关于一个末流985同学打蓝桥杯比较失败的刷题经历

weixin_51083297的博客 2109

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

算法小白学习日记-1:递归

三道有关递推的算法题目,以及自己的一点总结

qi1148的博客 1139

2019年7月23日训练日记(递归,递推,枚举)

枚举是将所有符合条件的情况全部列举出来找正确答案的算法。 递推是以已知的问题边界为起点向原问题正向推导的扩展方式。 递归是以原问题为起点,向已知问题边界推导,尝试把状态空间缩小,再通过该路线的反向回溯进行遍历。 做了三道感觉比较典型的例题,参考了网上大佬的代码,大佬的代码是真的精简。 一、递归实现指数型枚举 在1~n这n个整数中随机选取任意多个,输出所有可能的选择方案。 #include<b...

No Pain, No Gain . 270

【小航的算法日记】线性枚举(二) - 统计法入门

目录一、概念二、模板三、例题题:1550. 存在连续三个奇数的数组解:题:1295. 统计位数为偶数的数字解: 一、概念 二、模板 三、例题 题:1550. 存在连续三个奇数的数组 给你一个整数数组 arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true ;否则,返回 false 。 示例 1: 输入:arr = [2,6,4,1] 输出:false 解释:不存在连续三个元素都是奇数的情况。 示例 2: 输入:arr = [1,2,34,3,4,5,7,23,12] 输出:t

文艺倾年的博客 561

【小航的算法日记】因子分解和枚举

目录一、概念二、模板三、例题题:1952. 三除数解:题:1492. n 的第 k 个因子解:题:1362. 最接近的因数解:题:1808. 好因子的最大数目解: 详情请看英雄哥的专栏,以下是Java版 一、概念 素因子 二、模板 三、例题 题:1952. 三除数 给你一个整数 n 。如果 n 恰好有三个正除数 ,返回 true ;否则,返回 false 。 如果存在整数 k ,满足 n = k * m ,那么整数 m 就是 n 的一个 除数 。 示例 1: 输入:n = 2 输出:false 解释:2 只

文艺倾年的博客 627

【看海的算法日记✨优选篇✨】第二回:流动之窗,探索算法的优雅之道

滑动窗口算法通过动态维护子区间的特性,在遍历的过程中高效地找到问题的解。它的核心思想是利用两个指针构建窗口,并根据问题的条件灵活调整窗口大小。相比暴力枚举,滑动窗口在优化时间复杂度方面有显著优势,非常适用于处理连续性问题,如子数组、子字符串及其变形的场景。以上就是【优选算法篇·第二章:滑动窗口】的全部内容,欢迎指正~码文不易,还请多多关注支持,这是我持续创作的最大动力!

谁在夜里看海.的博客 9340

【蓝桥OJ—C语言】高斯日记、马虎的算式、第39级台阶

以上就是今天的学习内容啦~如果有兴趣的话可以订阅专栏,持续更新呢~咱们下期再见~

颜颜yan_的博客 894

高斯日记

题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯, 它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。 在高斯发现的一个重要定理的日记上标注着:534...

艾克 162

Flutter 框架跨平台鸿蒙开发 - 虚拟植物养成日记应用

摘要: 虚拟植物养成日记是一款基于Flutter开发的跨平台应用,用户可通过记录心情、步数和天气数据来培育个性化虚拟植物。应用包含四大功能模块:植物养成(根据用户数据动态计算植物生长状态)、成长日记(记录每日数据)、数据统计(可视化展示成长历程)和关于信息。采用Material Design 3设计规范,支持6种植物类型、6个成长阶段、6种心情和4类天气的交互影响,通过状态管理和动画控制器实现动态效果。项目结构清晰,分层架构包含表现层、业务层和数据层,适用于鸿蒙OS/Web平台,旨在通过趣味养成机制促进用户

2402_83910107的博客 359

B - TT 的旅行日记(Dijkstra算法链式前向星+堆优化)

B - TT 的旅行日记 题意: 众所周知,TT 有一只魔法猫。 今天他在 B 站上开启了一次旅行直播,记录他与魔法猫在喵星旅游时的奇遇。 TT 从家里出发,准备乘坐猫猫快线前往喵星机场。猫猫快线分为经济线和商业线两种,它们的速度与价钱都不同。当然啦,商业线要比经济线贵,TT 平常只能坐经济线,但是今天 TT 的魔法猫变出了一张商业线车票,可以坐一站商业线。假设 TT 换乘的时间忽略不计,请你...

Hdjjdsbjj的博客 552

210810算法日记:递归与位运算的完全枚举

1、递归完全枚举酸苦度 递归就不用解释了,选与不选回溯就行了 #include<iostream> #include<cmath> using namespace std; int s[12],k[12]; int ans=0x3f3f3f3f; int t; void dfs(int u,int x,int y) { if(u>t) { if(x==1&&y==0)return ; else ans=mi..

cjp_kangkang_的博客 117
上一篇: Python数据分析:Matplotlib数据可视化基础
下一篇: Python数据分析可视化:Matplotlib实训
-To be number.wan
博客等级 码龄4年 262粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-To be number.wan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值