- 博客(81)
- 问答 (2)
- 收藏
- 关注
原创 枚举 / 搜索类算法(机试核心考点)
求最短路径 / 最少步数→ 优先 BFS(DFS 易超时);求连通块数量 / 所有路径→ 优先 DFS;解空间小→ 暴力枚举;分治问题(阶乘、汉诺塔)→ 递归;搜索超时→ 加剪枝(可行性 / 最优性 / 记忆化)。
2026-03-23 19:48:10
437
原创 3.2 最大公约数(GCD)&斐波那契数列 & 素数相关(机试高频数学考点)
欧几里得算法(递归 / 迭代均可),记住,终止条件b=0;核心应用:最简真分数:枚举 i<j 的组合,判断;分数化简:分子分母分别除以 GCD;;优化技巧:枚举组合时仅需 i<j(避免重复计算,如 3/5 和 5/3 算一个);计算 LCM 时先除后乘,避免数值溢出;多个数的 GCD 计算中,若中途结果为 1 可直接终止(1 和任何数的 GCD 都是 1)。掌握这些核心知识点和变形,机试中所有 GCD 相关题目都能解决。核心:边算边取模避免溢出,超大项用矩阵快速幂;
2026-03-23 16:20:17
428
原创 同余模定理(机试必备数学常识)
若整数a和b除以d的余数相同,则称a和b模 d 同余d整除a - b(即存在整数k,使得。先取模再运算,避免数值溢出,仅保留余数相关信息;实用技巧:幂运算取模:逐次乘、逐次取模(如 n⁵%3 = ((n%3)^5)%3);大数取模:字符串逐位处理,公式remainder = (remainder*10 + 当前位) % mod;避坑点:除法不能直接用同余模,需用逆元;取模结果为负时,需加模数转为正数(如 (1-2)%3 = -1 → 加 3 得 2)。
2026-03-23 10:43:26
418
原创 链表类问题(机试选读 / 非 OJ 测评必考)
核心逻辑:和有序数组合并完全一致,双指针遍历两个链表,每次选较小的节点接入新链表;步骤创建虚拟头节点(简化边界处理);指针p1指向链表 1 头,p2指向链表 2 头;比较p1->val和p2->val,将较小的节点接入新链表,对应指针后移;剩余未遍历完的链表直接接入新链表尾部。循环链表核心:首尾相连 + 节点删除(需保存前节点指针),猴子报数本质是约瑟夫环问题;OJ 测评技巧:优先用数组模拟链表(next数组记录后继),避免指针错误和内存泄漏;非 OJ 测评重点。
2026-03-22 17:16:56
196
原创 贪心类问题(机试高频压轴题)
找准排序依据(即 “当前最优” 的规则),找对了就解决 99% 的问题;机试贪心题特征:问题能拆分为 “一步步选最优”,且每一步选择不影响后续(无后效性);避坑要点:先分析问题是否适合贪心(如 “01 背包” 不可分割,贪心无效,需动态规划);排序规则要写对(如本题是 “单价从低到高”,而非 “价格从低到高”)。
2026-03-22 13:40:10
214
原创 字符串类问题(机试必考)
遍历 + ASCII 码运算 + 边界处理;字符分类判断:牢记A-Z(65-90)0-9(48-57)的 ASCII 范围;避坑要点:不用gets(),改用fgets()并处理换行符;循环移位(如加密)需判断溢出,用-26实现字母循环;子串匹配要注意 “不重叠” 和 “剩余长度足够”。
2026-03-22 13:20:24
163
原创 日期类问题(机试高频)
闰年判断 + 每月天数 + 合法性校验;统一转成最小单位(秒 / 分钟)计算,再转回原格式;关键细节:输入解析用scanf匹配分隔符(如%d-%d-%d)、边界值校验(如 2 月 29 日、12 月 31 日。
2026-03-22 11:06:35
286
原创 排版类问题(机试高频)
本文总结了两种典型循环编程题型:图形输出和杨辉三角。图形输出题需拆分上下部分,通过控制空格和符号数量实现;杨辉三角则利用二维数组和递推公式a[i][j]=a[i-1][j]+a[i-1][j-1]生成。解题关键是通过画样例找规律,再转化为循环结构。文章提供了完整的C语言实现代码,强调多练习才能掌握这类看似简单但考察循环规律和二维数组的题目。
2026-03-22 10:51:05
85
原创 笔记:考研机试 —— 进制转换类问题
进制转换核心逻辑:除 x 取余,逆序输出;按位加权求和(每一位 ×x^ 位权);x 进制转 y 进制:先转 10 进制,再转 y 进制。大数处理技巧:用字符数组存储超大数,用整数数组模拟加减乘除;大数除法需逐位处理,记录余数传递给下一位。字符 / 数值转换:;
2026-03-21 23:37:39
262
原创 简单模拟问题
简单模拟题核心是按题意做条件判断和数值计算,无需复杂算法;机试优化:多组输入用scanf!= EOF,条件判断用if-else if,输出用%g适配格式要求。
2026-03-21 23:21:20
192
原创 数组使用技巧
一维数组可直接作为计数器,下标对应数字、值对应出现次数,适合范围固定的统计场景;二维数组可存储结构化数据(如地图),输入时优先用避免回车干扰,下标可灵活从 1 开始;数组嵌套可实现多维度排序需求,利用 “后赋值覆盖前赋值” 特性,可快速获取同条件下的最大值;算法复杂度参考(1 秒时限):O (N) 支持 500W 数据、O (N²) 支持 2000 数据、O (2ⁿ) 仅支持 24 以内数据。
2026-03-21 23:15:44
27
原创 考研机试笔记-1输入输出
基础类型输入:int 用%d、double 用%lf、char 用%c、字符串(无空格)用%s;结构化输入:scanf 格式串匹配分隔符(如%d-%d-%d解析日期);格式输出:进制(% x/% X/% o)、补 0(%0nd)、保留小数(%.nlf)、自动去零(% g);大整数用 long long,输入输出均为%lld;带空格字符串用 gets,单个字符读写用 getchar/putchar。
2026-03-21 22:55:54
100
原创 LeetCode刷题实战:删除字符串中的所有相邻重复项(栈的经典应用)
栈是处理相邻元素匹配问题的核心数据结构,通过维护“已处理序列”的状态,避免暴力解法中的重复扫描。本题与“有效括号”(LeetCode 20)的实现异曲同工,均通过栈的及时弹出来确保数据的合法性。栈的先进后出(FILO)特性非常适合处理相邻重复项的匹配问题。,重复项删除操作会选择两个相邻且相同的字符并删除它们。栈中存储的元素已经是“处理过的无相邻重复项”的子序列。最直观的暴力解法是重复扫描字符串,每次删除相邻重复项,直到没有可删项。栈操作完成后,剩余元素即为删除所有相邻重复项后的结果。显然需要更高效的实现。
2025-03-08 15:01:59
872
原创 LeetCode刷题实战:原地移除数组中指定元素(双指针法详解)
快指针fast:遍历数组的每一个元素,探测符合条件的元素。慢指针slow:指向下一个可覆盖的位置,仅在找到符合条件(即元素值不等于val)时向前移动。删除有序数组中的重复项移动零合并两个有序数组它们的核心逻辑均是通过指针分离“目标数据区”与“待处理区”,减少不必要的元素移动。
2025-03-08 14:20:37
600
原创 C++重新入门-vector容器
在C++中,是一个标准库中的容器,它提供了动态数组的功能,可以存储任意类型的元素,并且能够动态增长。以下是关于容器的详细解释:提供了一个动态大小的数组,可以根据需要动态地增加或减少元素的数量。这使得比C-style数组更加灵活和易于使用。要使用,需要包含头文件 ,并使用命名空间。3.创建和初始化:使用默认构造函数创建空的:使用初始化列表初始化:使用拷贝构造函数:使用范围构造函数:使用重复值初始化:4.访问元素:访问 中的元素可以使用下标操作符
2024-03-03 20:45:19
1309
1
原创 C++重新入门-string容器
/ 查找子串// 返回字符串长度// 比较字符串// 访问指定位置的字符// 替换子串// 插入子串// 删除子串// 提取子串。
2024-02-29 21:24:26
1486
1
原创 C++重新入门-基本输入输出
C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做。
2024-02-13 16:51:36
2657
原创 C++重新入门-指针篇
C++ 中的指针是一种非常重要的数据类型,它们存储了内存地址,可以用来直接访问和操作内存中的数据。指针提供了灵活性和直接性,但也需要谨慎使用,因为误用指针可能导致程序崩溃或安全漏洞。
2024-02-13 16:14:55
524
原创 C++重新入门-字符串
类类型,支持上述所有的操作,另外还增加了其他更多的功能。string类提供了一种更方便、更安全的方式来处理字符串,相比于C风格的字符串处理函数,它具有更多的功能和更强的类型安全性。C 风格字符串使用字符数组存储字符串内容,因此您可以使用指针来访问它们。通常情况下,C 风格字符串与指向其第一个字符的指针相同。这个字符串实际上是一个包含了字符 'H', 'e', 'l', 'l', 'o', '\0' 的字符数组。实际上就是一个指向这个字符数组的指针,也就是指向字符串第一个字符 'H' 的指针。
2024-02-13 15:59:19
490
原创 C++重新入门-数组
当我们谈到C++中的数组时,我们指的是一组相同类型的元素,这些元素按照顺序存储在内存中。数组是一种非常基本的数据结构,用于存储和处理大量相似类型的数据。
2024-02-12 16:57:44
496
原创 C++重新入门-C++ 函数
函数头包括函数的返回类型、函数名、参数列表等信息。// 函数体是函数返回的数据类型,它指定了函数执行后的返回值类型。如果函数不返回任何值,可以使用void。是函数的名称,它用于在程序中唯一标识函数。是函数的参数列表,包括参数的数据类型和名称。如果函数不接受任何参数,则参数列表为空。
2024-02-12 12:50:26
1028
原创 C++重新入门-C++判断语句
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。
2024-02-11 14:16:28
1561
原创 C++重新入门-循环
有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了允许更为复杂的执行路径的多种控制结构。
2024-02-11 13:54:00
1613
原创 C++重新入门-C++运算符
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和其他运算符。
2024-02-10 16:50:23
1073
原创 C++重新入门-C++变量作用域
一般来说有三个地方可以定义变量:在函数或一个代码块内部声明的变量,称为局部变量。在函数参数的定义中声明的变量,称为形式参数。在所有函数外部声明的变量,称为全局变量。// 在函数内部声明的局部变量std::cout
2024-02-07 14:43:01
2159
原创 C++重新入门-C++数据类型
使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。您可能需要存储各种数据类型(比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等)的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么。
2024-02-05 17:13:45
899
原创 C++重新入门-C++基本语法
注释是用来解释代码的文字,对于程序员而言是非常重要的。在C++中,注释可以使用两种方式:单行注释(//)和多行注释(/* */)。预处理器指令是在编译之前由预处理器处理的命令。例如,#include指令用于包含头文件,#define用于定义宏等。命名空间用于将代码分组在一个逻辑单元内,防止命名冲突。C++中常见的命名空间是std,包含了很多标准库的函数和对象。每个C++程序都需要有一个主函数,即main函数。程序从main函数开始执行。在C++中,你需要声明变量并指定其数据类型。常见的数据类型包括整数 (
2024-02-03 15:42:23
948
原创 C++重新入门-C++简介
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++ 被认为是一种语言,它综合了高级语言和低级语言的特点。C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++。C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。
2024-02-02 19:18:58
1100
原创 C++重新入门-引用
在C++中,引用是一种用于简化对变量的操作的机制。引用提供了一个,允许程序员使用。引用通常用于函数参数传递、函数返回值和简化代码中的某些操作。
2024-01-24 10:44:27
502
原创 C++重新入门-函数重载
C++函数重载(Function Overloading)是指在同一作用域内,可以定义多个函数,通过函数重载,可以使用相同的函数名来实现不同的操作,提高了代码的可读性和灵活性。重载函数必须具有相同的名称。重载函数的参数列表必须有所区别,包括参数的C++并不要求重载函数的返回类型相同,但除了返回类型之外,其他部分必须有所不同。
2024-01-23 19:54:58
644
原创 CMake良心教程(2)手把手教你入门!
这种方法对于将生成的可执行文件与源代码分开存放非常有用,使项目的结构更加清晰,并且可以更好地组织构建和生成的文件。此外,它还指示 CMake 在构建时将生成的可执行文件放在另一个子目录中(在这个例子中是。命令将告诉 CMake 进入指定的子目录(在这个例子中是。这种分层的方式让你能够更加灵活地组织和管理你的项目。命令时,CMake 会先处理根目录的。目录),并在该目录中寻找和处理。
2023-08-10 11:12:42
330
原创 CMake良心教程(1)手把手教你入门!
用来设置项目的名字和支持的语言,默认支持所有语言第二行代表指定工程名为demo,支持语言是C++最好写上,它会引入两个变量 demo_BINARY_DIR 和 demo_SOURCE_DIR,同时,cmake 自动定义了两个等价的变量 PROJECT_BINARY_DIR 和 PROJECT_SOURCE_DIR。
2023-08-08 10:11:00
1226
1
原创 【操作系统】CPU调度
在时间片轮转调度算法中,时间片的大小对系统性能的影响很大。短作业优先(SJF)调度算法从后备队列中选择一个或若干估计运行时间最短的作业,将它们调入内存运行:短进程优先(SPF)调度算法从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或发生某事件而阻塞时,才释放处理机。当一个进程正在处理机上运行时,即使有某个优先级更高的进程进入就绪队列,仍让正在运行的进程继续运行,直到由于其自身的原因而让出处理机时(任务完成或等待事件),才把处理机分配给就绪队列中优先级最高的进程。
2023-06-21 17:24:23
1897
原创 【操作系统】进程概述
进程是计算机系统中正在运行的程序的实例。它是操作系统对程序执行的基本单位,可以看作是程序在执行过程中的动态表现。每个进程都有自己的内存空间、代码、数据和执行状态。多个进程可以同时运行在计算机系统中。1)进程是程序的一次执行过程。2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。引入进程实体的概念后,我们可以把。
2023-06-20 16:33:26
4383
原创 【操作系统】程序运行环境
中断(Interruption)也称外中断,是指来自CPU 行指外部的事件,通常用于信息输入/输出,如设备发出的 I/O 结束中断,表示设备输入/输出处理已经完成。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。异常(Exception)也称内中断,是指来自CPU执行指令内部的事件,如程序的非法操作码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件。异常不能被屏蔽,一旦出现,就应立即处理。
2023-06-19 18:17:26
831
原创 操作系统的基本概念
用户应用程序操作系统硬件硬件如中央处理器、内存、输入/输出设备等,提供基本的计算资源。应用程序如字处理程序电子制表软件、编译器、网络浏览器等,规定按何种方式使用这些资源来解决用户的计算问题。操作系统控制和协调各用户的应用程序对硬件的分配与使用。在计算机系统的运行过程中,操作系统提供了正确使用这些资源的方法。综上所述,操作系统(Operating System,OS)
2023-06-19 10:58:35
364
空空如也
c语言一个数组和函数的综合实验,希望大家解决分析一下
2021-11-17
c语言的一个有趣的问题
2021-11-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅