自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 收藏
  • 关注

原创 手撕算法——深度优先搜索—DFS

文本围绕递归型枚举、回溯剪枝及DFS展开讲解。先介绍回溯与剪枝概念,给出枚举子集等递归型枚举的题目、原理与代码;再借选数等问题说明DFS标记及剪枝方法;接着阐述剪枝与优化策略,以数的划分等为例展示搜索、剪枝及枚举优化;最后讲解记忆化搜索,借斐波那契数等说明其原理与代码,助力理解复杂搜索算法与优化技巧 。

2025-04-01 01:34:46 675

原创 算法基础——二叉树

该博客围绕二叉树展开介绍。概念上,二叉树结点分左右孩子且顺序固定,特殊二叉树有满二叉树和完全二叉树。存储方式包括顺序存储和链式存储。以一个有n个结点的二叉树为案例,通过输入每个结点左右子结点编号建立二叉树。遍历方面,深度优先遍历有先序、中序、后序三种,分别给出代码实现及多组测试数据;宽度优先遍历则借助队列进行层序遍历,也给出了相应代码实现。

2025-03-29 23:32:47 483

原创 算法基础——树

该博客主要介绍树的相关知识。树是重要的非线性数据结构,涉及树的定义、基本术语、有序与无序树、有根与无根树等概念。存储方式有孩子表示法,包括用vector数组和链式前向星实现,vector数组虽耗时但一般不影响算法竞赛。遍历方法有深度优先遍历(DFS)和宽度优先遍历(BFS),并分别给出用vector数组和链式前向星存储时的实现代码,还展示了DFS和BFS处理特定输入数据的过程,此外还给出了斐波那契数列的递归实现代码。

2025-03-29 22:34:29 398

原创 算法基础——栈

这篇博客介绍了栈的概念与模拟实现及C++中stack相关内容。栈是只在一端进行数据插入和删除的线性表,插入删除端为栈顶,另一端为栈底。栈的模拟实现可通过创建数组和变量记录元素个数来完成,包含进栈、出栈、获取栈顶元素、判空、求元素个数等操作。在C++中,stack的创建为stack<T> st形式,T可为任意类型,还可使用size、empty、push、pop、top等操作,文末给出了相应测试代码。

2025-03-24 00:04:20 353

原创 手撕算法——链表

该博客介绍了四个与链表应用相关的问题。一是排队顺序问题,用静态链表存储,依题意修改指针域,根据给定头结点遍历输出。二是单向链表问题,属链表模板题,实现单链表,包括插入、查询、删除等操作。三是队列安排问题,因频繁在某位置前后插入元素,采用双向循环链表模拟,含初始化、插入及删除操作。四是约瑟夫问题,用循环链表模拟,不过代码未给出完整内容。

2025-03-23 15:15:22 285

原创 算法基础——链表

该博客介绍链表相关知识。链表是线性表的链式存储,元素存于任意存储单元,结点含数据域和指针域,有8种结构。单链表模拟实现分动态(用new和delete)和静态(用数组),包括定义、头插、遍历、按值查找(可哈希优化)、插入、删除等操作,尾插等操作因复杂度高没必要实现。双向链表在单链表基础上加前驱指针数组,有类似操作。循环链表中带头单向链表结构可成环。还介绍了动态链表list,包括创建、头插尾插、头删尾删等操作及其时间复杂度,并给出测试代码 。

2025-03-23 13:43:46 934

原创 手撕算法——二分

二分算法用于当解具有二段性时,通过分析待查找区间中点位置,舍弃一半区间,在有答案区间继续查找。其模板有找区间左、右端点两种,求中点时为防溢出可采用 `mid = l + (r - l) / 2` 。时间复杂度为logN ,记住 `if/else` 中出现 `-1` 时求 `mid` 就 `+1` 。解决流程是先画图确定模板,得出结果后判断是否存在。STL 中 `lower_bound` 、`upper_bound` 可辅助查找但有局限。还介绍了二分答案在木材加工、砍树、跳石头等问题中的应用及原理。

2025-03-22 18:44:00 978

原创 手撕算法——差分

博客主要介绍了差分算法相关内容,包括一维差分、海底高铁(涉及一维差分应用)、二维差分及地毯(二维差分应用)。一维差分可用于处理区间修改问题,通过创建差分数组,利用其性质处理区间修改,最后通过前缀和还原原始数组。海底高铁问题则是利用差分数组计算高铁乘坐次数,进而求出最小花费。二维差分是一维差分的扩展,通过类比推导出二维差分矩阵的性质,可用于处理二维矩阵的区间修改问题,同样通过前缀和还原原始矩阵。地毯问题直接利用二维差分矩阵解决。这些内容通过具体的题目描述、算法原理及参考代码进行了详细讲解。

2025-03-20 15:33:58 942

原创 算法基础——顺序表

本文介绍顺序表相关知识。顺序表是线性表的顺序存储,通过数组实现,有静态和动态两种分配方式,前者无需动态管理内存但易溢出或浪费空间,后者可按需分配但代码复杂、时间消耗大,算法竞赛多采用静态方式。接着模拟实现静态顺序表,包括创建、增删查改、清空等操作,还介绍了测试代码。为解决多顺序表操作复杂问题,可利用C++结构体和类封装静态顺序表。动态顺序表因实现复杂且效率低,算法竞赛常用C++ STL的vector,介绍了其创建、成员函数(size、empty、begin/end等)及测试代码。

2025-03-19 01:08:19 755

原创 手撕算法 ——前缀和

本文介绍前缀和相关算法,包括一维、二维前缀和及最大子段和、激光炸弹问题。一维前缀和可解决数组区间和问题,暴力法时间复杂,前缀和法通过创建数组 `f[i]=f[i−1]+a[i]` 快速求解,查询为 `f[r]−f[l−1]`;最大子段和通过前缀和数组,减前驱最小值求;二维前缀和可求子矩阵元素和,暴力法遍历慢,前缀和法套公式创建矩阵求解;激光炸弹用二维矩阵存目标价值,求前缀和矩阵,枚举边长为 `R` 子正方形最大值,注意位置重复和 `R` 超范围情况,各有参考代码。

2025-03-18 21:18:52 1371

原创 Canvas 直线图形:构建数字化线条艺术

这一系列博客聚焦 Canvas 直线图形,深入探讨其从基础绘制到创意应用的各个层面。涵盖了如何运用代码构建数字化线条艺术,解锁其中蕴藏的视觉魔法,探索通过直线图形打造交互界面的方法。同时,将 Canvas 直线图形视为代码与美学的交融点,分享从 0 开始的创作之旅,挖掘其在高效可视化图形绘制等方面的无限可能,引领读者开启创意编程之门,感受直线图形在数字画布上带来的独特魅力与惊喜。

2025-03-17 15:25:56 831

原创 基础算法——枚举

顾名思义,就是。因此,枚举是⼀种纯暴⼒的算法。⼀般情况下,枚举策略都是会超时的。此时要先根据题⽬的数据范围来判断暴⼒枚举是否可以通过。如果不⾏的话,就要⽤后⾯要学的各种算法来进⾏优化(⽐如等)。使⽤枚举策略时,重点思考枚举的对象(枚举什么),枚举的顺序(正序还是逆序),以及枚举的⽅ 式(普通枚举?递归枚举?⼆进制枚举)。

2025-03-16 18:47:52 551

原创 手撕算法——顺序表

该博客主要介绍了多种算法问题及相应解法。询问学号问题可直接用 vector 或数组模拟;寄包柜问题可通过创建二维数组(空间复杂度过高)或vector<int> a[N]解决,并解释了vector<int> a[N]与vector<int> a(N)的区别。移动零和颜色分类问题利用双指针,将数组分块处理。合并两个有序数组有辅助数组和原地修改两种解法。The Blocks Problem 是模拟题,用 vector 模拟,包括查找位置、木块归位、移动木块等操作,并给出了各问题的参考代码。

2025-03-12 00:01:47 857

原创 手撕算法——高精度

博客围绕高精度运算展开,介绍了加、减、乘、除四种运算的算法。先以字符串读入大整数,再将其每一位拆分逆序存于数组。加法模拟列竖式相加,对应位累加、处理进位和余数;减法先判断大小让大数在前,对应位相减并处理借位,还要去除前导零;乘法模拟无进位相乘再相加,最后统一进位和处理前导零;除法模拟列竖式相除,用变量标记当前被除的数,计算商和余数,最后处理商的前导零,每种运算都给出了参考代码。

2025-03-04 21:31:27 667

原创 手撕算法——模拟

博客主要介绍了三个算法相关内容。一是多项式输出,采用模拟和分类讨论的方法,依次处理每一项的符号、系数和次数,通过判断系数正负、是否为 1 以及次数大小来输出结果。二是蛇形方阵,模拟填数过程,定义方向向量,按规则朝一个方向填数,越界后更新方向和位置,直至填完所有数。三是字符串的展开,依据详细规则模拟展开过程,考虑数字、字母及各种参数对字符处理的影响,通过分类讨论处理细节。每个算法都给出了对应的参考代码。

2025-03-04 18:34:44 923

原创 从零到一:机器学习的诗意构建

本文概述了人工智能(AI)及其分支——机器学习(ML)和深度学习(DL)的基本概念、发展历史及应用。AI经历了符号主义、统计主义和深度学习三次浪潮。ML通过数据提取规律实现预测,DL在图像识别等领域表现突出。文章介绍了监督学习、无监督学习、半监督学习和强化学习,并讨论了欠拟合、过拟合问题及其解决方法。最后,推荐了基于Python的scikit-learn库作为机器学习开发工具。AI和ML在无人驾驶、医疗诊断等领域有广泛应用。

2025-02-09 01:09:48 800

原创 C 语言指针与数组:千丝万缕的关系剖析

该博客是 C 语言指针和数组的综合教程。从数组名含义及其特殊情况讲起,包括使用指针访问数组和一维数组传参本质。阐述冒泡排序原理及优化,介绍二级指针、指针数组、字符指针概念及应用。对数组指针和二维数组传参本质深入剖析,还讲解函数指针及其数组,涵盖创建、类型解析、使用,还以计算器程序展示函数指针数组的转移表应用,含大量代码示例和解释。

2025-01-07 14:31:12 856

原创 指针之矢:C 语言内存幽境的精准飞梭

本博客全面解析 C 语言指针相关知识:首先阐述内存和编码,包括内存单元划分、存储单位及编址原理;接着深入指针和指针类型,涵盖取地址操作符、指针变量及其类型、解引用操作符、指针大小,以及特殊的void*指针和const修饰指针;还探讨指针类型的意义,涉及指针运算(加减整数、指针相减、关系运算);同时介绍野指针的概念、成因及规避方法;最后对比传值调用和传址调用,以交换函数为例说明其区别。

2024-12-28 00:19:48 745

原创 C++ 多态:形状类的奇幻变形记

本博客将带你开启 C++ 编程的奇妙之旅,以形状类的体积计算为例,深入探秘多态性的神奇之处。我们将展示如何利用抽象类和虚函数,实现长方体、球体等形状的体积计算,并通过一个 total 函数计算它们的体积总和。了解如何运用多态性使代码更通用、灵活,方便扩展新形状类。无论你是 C++ 初学者还是有经验的开发者,都能从中掌握多态性的精髓,让代码更简洁、优雅,展现面向对象编程的魅力。

2024-12-25 22:53:41 699

原创 类的动态演绎:程序运行中的生命绽放

​本博客深入剖析两段代码。任务一聚焦 “Hello” 类,从其头文件的保护机制与类声明,到源文件的构造、析构函数实现及全局对象运用,再到主函数的简单启动提示,全面展现类的设计与生命周期管理。任务二则围绕 “Smile” 类,涵盖头文件的接口定义,源文件多样函数逻辑,如构造函数的特殊赋值、析构函数的销毁提示等,以及主函数中对象创建与接口函数调用流程,清晰呈现类的复杂交互与功能实现,助您深入理解面向对象编程核心要点。

2024-12-22 23:55:46 753

原创 C++ vector:代码舞台上伸缩自如的数据精灵舞链

本博客全面解析 C++ vector。先介绍其为 STL 常用容器,对比 C 数组,有动态伸缩、接口丰富、内存管理佳等优势,亦有头部操作慢的不足。接着详述使用方法,包括多种构造方式、容量与大小操作、元素访问修改、插入删除操作,以及迭代器类型与遍历方式。重点剖析迭代器失效问题,涵盖失效原因、常见致失效操作(如扩容、删除)、不同编译器处理差异等,并给出避免失效建议与最佳实践。是深入学习 C++ vector 的实用指南,助您高效掌握其精髓与应用要点。

2024-12-22 15:25:28 1009

原创 解析 C++ 汽车租赁系统代码:类与多态的巧妙应用

本博客聚焦 C++ 汽车租赁系统代码。先点明其涵盖继承、多态及抽象类等关键知识点。深入剖析代码架构,基类与派生类设计巧妙,如 MotoVehicle 奠定基础,Car 和 Bus 各有特色拓展。主函数逻辑清晰,从变量初始化到租赁循环,再到信息展示与内存释放。通过解读代码,助您深刻领会 C++ 面向对象编程精髓,感受代码构建复杂业务逻辑的魅力,为提升编程能力提供有力参考与指引。

2024-12-21 23:46:14 809

原创 C 数组:索引魔杖点化的数据星图阵列

数组是编程关键数据结构,有一维、二维等类型。一维数组存储同类型多元素,创建定类型与大小,下标 0 起,内存连续,可算元素个数;二维似矩阵,创建与初始化有规则。C 语言不查数组越界,靠程序员把关。C99 变长数组依变量定大小有局限,编译器支持不同。数组作函数参数多传首元素地址,如冒泡排序设计有讲究。经字符汇聚、二分查找等实战,可深入掌握数组运用。

2024-12-21 16:16:04 1239

原创 C 语言代码诗韵:数字功能的雅集华章

在这篇博客中,深入剖析了一个多功能 C 语言程序。其程序架构清晰,分为菜单、主函数、函数、引用区。各功能函数独具匠心,如sumDigits巧妙求和,factorialSum精准计算阶乘和,printNumbersWith7筛选特定数字等。从求最大公约数到判断回文素数,从猜数字游戏到数列求和求值,涵盖多方面数学与逻辑处理。不仅展示了代码编写思路,还强调了函数在构建程序功能体系的关键作用,体现合理规划与代码复用的价值,为编程学习者提供丰富的知识与实践范例,启发深入探索函数编程奥秘,助力编程能力提升。

2024-12-17 23:32:45 1019

原创 杏坛人物谱:类间传承的代码华章

本博客深度剖析学校师生类层次结构。从 “在校人员” 类起始,讲述其数据与功能设定,“学生类” 与 “教师类” 经虚拟继承拓展特性,“助教类” 多重继承并整合,借构造函数与 output 函数展现精妙设计,代码示例与 main 函数运行演示全流程,助读者领悟 C++ 类层次应用于校园场景的编程要诀与设计思路。

2024-12-15 23:46:17 329

原创 C 语言函数:数字江湖的秘籍要诀与侠义传功

本博客全面剖析 C 语言函数知识。先阐述函数概念与分类,包括库函数(如常用的 printf、strcpy 等)及自定义函数的组成与示例。接着深入讲解函数参数、调用方式(传值、传址)及实战演练。还介绍嵌套调用、链式访问、声明与定义(含多文件)。重点探讨递归,涵盖概念、条件、举例(阶乘、打印整数位等),对比递归与迭代的优劣及经典题目(青蛙跳台阶、汉诺塔),为深入理解和运用 C 语言函数提供丰富知识与实践指导。

2024-12-15 15:18:54 1482 1

原创 C++ 图形编程:形状家族的面积乐章与继承诗韵

本博客聚焦 C++ 类继承于图形面积计算的应用。剖析基类 Shape 设计,其 area 函数为派生类接口奠基。详解 Circle、Rectangle、Triangle 派生类构建,含数据成员、area 函数重写与构造函数。展示 main 函数中依输入创建对象并计算输出面积。助读者领会 C++ 类继承在此场景的运用原理与实现,为面向对象编程学习提供参考范例。

2024-12-15 01:01:43 289

原创 C++ 编程诗章:交通工具类族的奇幻构建与多态交响

本博客聚焦 C++ 类继承与多态在交通工具类体系构建中的应用。深入剖析基类 Vehicles,阐述其数据成员、构造函数及成员函数作用,解析派生类 Car 新增成员、构造函数与展示函数的独特设计,呈现完整代码及测试过程,以实例与理论结合,助力读者领悟 C++ 编程核心概念在具体情境中的运用原理与细节,指引深入学习之路。

2024-12-14 23:29:38 378

原创 C 语华章:分支妙笔书奇境,循环幽思绘长卷

C 语言控制语句涵盖分支、循环与转向语句。分支语句中,if 形式多样且有悬空 else 陷阱,switch 用于多分支,break 与 default 子句用法关键。循环方面,while 先判后循,for 风格与频率占优,do while 先循后判,各自的 break 与 continue 功能不同。实战练习包含阶乘计算、二分查找等并附代码。goto 虽理论非必需,但在跳出多层嵌套时有用,还展示了其与循环实现关机程序的代码差异。

2024-12-14 00:58:01 1133

原创 C++ 用户类实战:创建、测试与功能演示

C++ 的 User 类管理用户信息,含 name、password、email 私有成员。setInfo 设信息有默认值,changeEmail 交互改邮箱,changePassword 验旧密码防错改,printInfo 特定格式显信息。main 中创建 User 对象,User1 展示初态,User2 改后展示,测试功能,达成实用管理。

2024-12-13 01:15:20 526

原创 图书类在 C++ 中的构建与价格排序秘籍

C++ 中,Book类用于管理图书信息。它有name、author、price私有成员存储数据,公有构造函数及数据获取、修改函数。compareBooks依价格定排序规则。main函数里创建Book数组,用sizeof算元素数,引入的sort函数按规则排序,再循环输出,实现图书信息有序管理展示,彰显 C++ 面向对象编程的实用与便捷,让图书信息处理更高效有序。

2024-12-13 01:00:14 471

原创 计算直线的交点数

代码巧妙地运用了类似动态规划的思想,通过二维数组存储状态并基于已知的简单交点情况逐步推导复杂情况下直线交点数量的可能性,能够有效地处理多组不同直线数量的测试数据,并按规定格式输出相应的交点数量情况。

2024-12-08 14:53:46 734

原创 ACM:地道战

代码运用了动态规划思想,通过合理设置表示各段地道时间的数组(cross 和 vertical)以及存储最小时间代价的动态规划数组(dp),结合根据不同路径取最小时间的状态转移策略,解决了在给定地道网络布局及各段通过时间情况下,求从起点到终点最短时间的问题,并且能够处理多组不同的测试数据情况。不过代码中存在一些可能多余或不太规范的地方(如 dp[i][j] = 0; 这句可能多余的赋值语句),但整体思路是清晰有效的。

2024-12-08 14:37:36 502

原创 最长不下降序列

该代码旨在处理多组整数数列,求每组数列最长不下降子序列长度并输出。通过循环读数列长度及各整数存于数组 a,用数组 dp 存中间结果并初始化。外层循环遍历数列,内层循环对比元素,依条件更新 dp 值。再找 dp 数组最大值存于 max_length,最后输出其值,持续处理下一组数列至文件末尾。

2024-12-08 14:27:46 685

原创 ACM:免费馅饼

该代码旨在解决模拟接馅饼问题,按每秒移动不超一米且初始站在位置 5 的规则,算最多能接到的馅饼数。先定义二维数组 dp 存中间结果与求最大值函数。通过循环读多组馅饼掉落信息,初始化相关变量与 dp 数组。再逆向动态规划,依状态转移方程更新 dp 值,最后输出特定位置与时间下的 dp 值作为结果。

2024-12-08 13:52:26 946

原创 ACM:最大盈利

该代码旨在处理多本账本(测试用例)的每日盈亏数据,找出每本账本中连续若干天最大盈利情况并按格式输出。先读测试用例数量 T,对每个测试用例,读数组长度 N 并动态分配内存存数据,初始化相关变量。接着遍历数组算最大盈利,依条件更新和与位置。最后输出结果,释放内存,继续处理下一个测试用例。

2024-12-08 13:39:11 572

原创 ACM:拦截导弹

该代码旨在解决导弹拦截系统相关两个问题:一是算一套系统按特定规则(后续炮弹不高于前发)最多能拦截的导弹数,二是算拦截所有导弹最少需配备的系统套数。通过定义全局变量、相关数组,利用 f1 函数依规则更新最多拦截数量数据,f2 函数用贪心策略统计最少套数数据,在 main 函数里循环读入多组导弹高度数据并处理,最后输出相应结果。

2024-12-08 13:12:40 646

原创 Computer Arrangement

这段 C 语言代码用于处理多组班级上机时间区间数据,先读测试数据组数 t(1 到 100)。对每组数据,先将存储区间的结构体数组 ac 元素初始化为 0,再读班级数量 n(1 到 2000)及各班级区间起始、结束值。接着用冒泡排序按结束值从小到大排区间,随后以首个区间结束值为基准,遍历其他区间,若当前区间起始值大于等于基准值(即不重叠),安排班级数 ans 加 1 并更新基准值,最后输出每组最多可安排上机的班级数。

2024-12-08 12:47:06 406

原创 ACM:连数问题

整体思路是将 n 个正整数以字符串形式存储,按自定义比较规则排序后拼接输出,形成最大多位整数。具体来看,比较函数 compare 通过创建临时数组存储不同拼接顺序字符串,用 strcmp 比较字典序确定顺序优劣。主函数用无限循环接收输入,先读整数 n 确定字符串个数,存入二维数组,用 qsort 按 compare 规则排序,再遍历输出排序后的字符串,拼接后可得目标最大多位整数,且每行输出一个结果保证格式规范。

2024-12-08 12:30:43 367

原创 ACM:均分纸牌

该程序解决使 N 堆纸牌(总数是 N 倍数)数量相等的最少移动次数问题。通过 while 循环读入 N,不为 0 则进入处理流程,用 for 循环读入每堆纸牌数并算总数、平均值。定义 count 记录调整次数,再遍历数组,相等则跳过,不等就将差值累加到下一堆并使 count 加 1,遍历完输出 count,如此循环直至输入 N 为 0 结束程序。

2024-12-07 23:34:05 492

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除