- 博客(44)
- 收藏
- 关注
原创 单调栈 单调队列
单调栈:栈中数据具有单调性。一般用于求解NGENextGreaterElementNLENextLessElementPGEPreviousGreaterElementPLEPreviousLessElement问题。
2024-04-26 19:27:40 664
原创 欧几里得算法求解GCD
如果其中一个数为0,则另一个一定就是两数的GCD假设我们已经证明了对于所有符合条件的ab,辗转相除法能够正确地给出gcdab。现在考虑一个新的(a, b)对,其中a和b都不为0。根据辗转相除法的步骤,我们执行以下操作:a. 用b去除a,得到余数r。根据欧几里德算法的定义,gcdab==gcdbr。b.∵r==a%b,根据整除的性质,∃整数q,使得abqr。
2024-04-04 09:43:34 680
原创 前缀和 差分
一种预处理技巧,可在获取数组元素时在线获取前缀和/差分数组,之后要用的时候即可用O1的复杂度进行访问。前缀和数组可在O1的复杂度访问前n项元素之和,差分是前缀和的逆运算,适合用于区间修改(先修改后查询)的问题。差分d⟶∑原a⟶∑前缀和s一般定义前缀和、差分数组时,通常选择浪费一个空间,以提升编码速度(无需考虑下标为负的情况)
2024-03-12 00:41:52 967
原创 位运算(一)
整形在计算机中是以补码的形式进行存储的,因此位运算也是在补码的基础上进行操作的。负数:反码=原码取反(除符号位) 补码=反码+1。:按位取反(在补码上按位取反,包括符号位也取反)复习:正数:原码=反码=补码。
2024-02-17 18:43:47 378
原创 作用域 存储期
块作用域:在块(花括号括起来的复合语句)中局部变量、函数形参、for、while、do…while、if都是块作用域。选择与循环中,整个选择与循环是其所在块的子块,循环体/分支体是整个循环/选择块的子块。若嵌套块作用域出现了同名变量,则最内层的块作用域会覆盖掉外层块作用域的同名变量,直到程序运行退出内部块作用域。函数作用域:goto语句的标签。一个标签无论在函数体的何处(无论处于多少层块中),其作用域是整个函数函数原形作用域:函数形参名。范围从形参定义到函数声明结束。
2024-02-17 18:43:10 335
原创 编译基本过程 预处理器
源代码(main.c)->预处理器(cpp)->编译器(gcc/clang/msvc)->汇编器(as)->链接器(ld)->可执行文件(main.exe)
2024-02-17 18:42:28 207
原创 批量组织相同数据类型的基础数据结构——数组
0数组大小−1基址是指用于定位数据结构中元素位置的地址。它通常指向数据结构的起始位置或者某个特定元素的位置。基址通常与偏移量结合使用,通过基址加上偏移量来计算访问数据结构中的特定元素的内存地址。在数组中,基址指的是数组的起始地址,即数组的首元素的地址。数组名在大多数情况下可以被视为数组的基址,通过数组名可以访问数组中的元素,时间复杂度为O1。因此,数组中变地址运算符可视为数组的偏移量。在函数调用中,基址指的是当前函数栈帧的基址,也就是栈帧中局部变量和参数的起始地址。
2024-02-17 18:40:32 756
原创 单翻译单元的基本结构
选择块由条件和分支体组成,选择块是其所在块的子块(选择块必须在块作用域中,因为程序执行必须在main函数块中),分支体是选择块的子块。(块套块)
2024-02-17 18:39:37 410
原创 函数 栈帧
形参在函数调用时会被赋予实际参数的值,而不是独立存在的变量。形参的性质:形参是函数定义中的参数,在函数被调用时用于接收传递给函数的实际参数的值。形参在函数定义时就已经确定了,它们的作用是接收参数值,而不是独立的变量。因此,形参在函数定义中只是参数的声明,用于说明函数接收的参数类型和名称,而不是独立的变量定义。形参和实参的关系:在函数调用时,实际参数的值会被传递给形参,形成了形参和实参的对应关系。形参会在函数执行期间使用实参的值,但形参本身并不是独立的变量,它们不会在函数调用之前分配内存空间或提供初始值。
2024-02-17 18:37:46 447
原创 转义序列说明符 续行符(\)
可以在代码任意位置进行续行,强制将某一部分分割到下一行去写。所有作为续行符的\会被预处理器拿掉并将下一行代码连接到上一行。此时需要注意缩进问题,一般下一行不能和上一行保持同样的缩进,否则用于缩进的Tab/Space也会被连接到上一行。活跃位置:输出设备(显示器、打印机等)中下一个字符将要出现的位置,对于显示器则为下个字符将出现的位置。
2024-02-17 18:37:12 236
原创 内存处理函数 内存池
malloc功能:用于动态分配指定大小的内存块,分配的内存块不会被初始化,内容是未定义的。返回值:若分配成功,返回一个指向该内存块起始地址的通用型(void)指针(在C++中必须进行强制类型转换)。若分配失败,返回空指针。calloc功能:动态分配数量为 num ,每一块大小为 size 的连续内存块,并将其内容初始化为0。返回值:若分配成功,返回一个指向该内存块起始地址的通用型(void)指针(在C++中必须进行强制类型转换)。若分配失败,返回空指针。realloc。
2024-02-17 18:33:23 507
原创 常量指针 指针常量
常量修饰符const在指针声明符*前,表示指针”指向“的这个属性是常量,也就是不能通过指针对值进行修改。这种情况下,const修饰符作用在int*上,表明指针”指向“这个动作的属性是常量,不能通过指针进行修改i。
2024-02-17 18:31:49 798
原创 表达式 副作用 序列点
其中复合语句(块)可视为单个语句。因此while和for循环之后加的是单个语句(简单语句、复合语句、空语句(只有1个;构成的语句))
2024-02-17 18:31:17 341
原创 Q&A:为什么scanf的可变参数列表是输入项地址表?
若忘记加上取地址符(间接寻址符)(&),由于scanf不会检查传入可变参数的内容是否是合法,仍然将传入的内容当做正确的地址处理,由于与变量先前的值相等值的地址是不可预测的(可能是其他程序申请的内存,或为操作系统核心部分内存),会造成地址的非法访问(访问了未经申请的内存),这样操作会触发操作系统内存保护机制,被操作系统认为是具有危害性的行为,操作系统会强行终止程序以确保系统正常运行(Runtime Error)。因此下次读入时必须手动清除缓冲区中该项内容(getchar()或fflush(stdin))。
2024-02-17 18:26:37 232
原创 小白编程题:圣诞礼物
圣诞节就要到了,同学准备了一个超级好玩儿的游戏--代码接力,acmer排成一队。首先,前两名acmer玩游戏。然后失败者走到队尾,赢得acmer将和下一个acmer比赛,等等。直到有acmer连续赢得n场比赛,则这个acmer成为赢家,将获得为TA准备的圣诞礼物。对于每个参与的acmer,我们都知道其敲代码的能量,在一场比赛中,能量强大的acmer获胜,如果能量相同,后来者获胜,确定谁能获得精心准备的礼物。
2024-01-19 19:06:43 424
原创 学习心得:二分查找
cmp 比较两个元素的函数,定义比较规则。需要注意的是,查找数组必须是经过预先排序的,而排序的规则要和比较子函数。当你需要找到目标元素的第一个和最后一个出现位置时,你可以通过稍作修改来实现。需要注意浮点数会存在精度损失的问题,所以我们需要通过比较,来返回1或-1,以确定是增序还是降序。bsearch查找成功返回指向该元素的指针。size 数组中每个元素的大小,一般用*sizeof()*表示。base 指向进行查找的数组。key 指向要查找的元素。num 数组中元素的个数。
2024-01-15 20:07:58 338
原创 二叉树板子
二叉树采用数组存储用下标访问结点,存储方式为按层存储。数组下标从0开始:若某节点下标为i,则其父节点下标为⌊(i−1/2⌋,左子节点下标为2∗i1,右子节点下标为2∗i2。数组下标从1开始:若某节点下标为i,则其父节点下标为⌊i/2⌋,左子节点下标为2∗i,右子节点下标为2∗i1。101。
2024-01-15 20:02:36 931
原创 来自ACMer的新年贺词
冒泡排序,选择排序,插入排序,快速排序,堆排序,归并排序,希尔排序,桶排序,基数排序新年帮您排忧解难。有向图,无向图,有环图,无环图,完全图,稠密图,稀疏图,拓扑图祝您新年宏图大展。最大流,网络流,标准输入流,标准输出流,文件输入流,文件输出流祝您新年顺顺流流。线性动规,区间动规,坐标动规,背包动规,树型动归为您的新年规划精彩。散列表,哈希表,邻接表,双向链表,循环链表帮您在新年表达喜悦。最长路,最短路,单源路径,所有节点对路径祝您新年路路通畅。祝大家新年渐进步步高。
2024-01-01 00:30:46 271
原创 学习心得:函数指针和函数指针数组
返回值类型 (*函数指针变量名)(形参表);函数指针的返回值类型意为该函数指针能指向该返回值类型的函数。形参表是可选的,若要指向的函数中没有形参则缺省。勿忘函数指针的形参需要与被调函数形参及实参类型一致。函数指针的形参表中一般缺省形参名,只需声明形参类型即可。C语言中一般只建议在定义函数指针时缺省形参名。注:不要将函数指针(指向函数的指针)和指针函数(返回值为指针的函数)混淆,它们仅仅是在名字上相似,二者是截然不同的两种东西。//形参表的变量名一般省略,省略的写法一般只在函数指针时用到。
2023-12-28 20:35:40 407 1
原创 小白编程题——统计一行文本的单词个数
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。
2023-12-05 20:01:21 837
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人