自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单调栈 单调队列

单调栈:栈中数据具有单调性。一般用于求解NGENextGreaterElementNLENextLessElementPGEPreviousGreaterElementPLEPreviousLessElement问题。

2024-04-26 19:27:40 664

原创 飞机降落蓝桥杯[2023蓝桥省赛B组]

标准深搜板子题,难度不大。

2024-04-11 19:48:55 546 2

原创 回溯法(一)——全排列 全组合 子集问题

【代码】全排列问题。

2024-04-04 14:56:45 345

原创 欧几里得算法求解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

原创 运算符(一)

C语言中唯一的三目运算符。

2024-02-17 18:38:42 109

原创 函数 栈帧

形参在函数调用时会被赋予实际参数的值,而不是独立存在的变量。形参的性质:形参是函数定义中的参数,在函数被调用时用于接收传递给函数的实际参数的值。形参在函数定义时就已经确定了,它们的作用是接收参数值,而不是独立的变量。因此,形参在函数定义中只是参数的声明,用于说明函数接收的参数类型和名称,而不是独立的变量定义。形参和实参的关系:在函数调用时,实际参数的值会被传递给形参,形成了形参和实参的对应关系。形参会在函数执行期间使用实参的值,但形参本身并不是独立的变量,它们不会在函数调用之前分配内存空间或提供初始值。

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

原创 基本数据类型

和。

2024-02-17 18:28:41 962

原创 Q&A:为什么scanf的可变参数列表是输入项地址表?

若忘记加上取地址符(间接寻址符)(&),由于scanf不会检查传入可变参数的内容是否是合法,仍然将传入的内容当做正确的地址处理,由于与变量先前的值相等值的地址是不可预测的(可能是其他程序申请的内存,或为操作系统核心部分内存),会造成地址的非法访问(访问了未经申请的内存),这样操作会触发操作系统内存保护机制,被操作系统认为是具有危害性的行为,操作系统会强行终止程序以确保系统正常运行(Runtime Error)。因此下次读入时必须手动清除缓冲区中该项内容(getchar()或fflush(stdin))。

2024-02-17 18:26:37 232

原创 多维数组的动态分配内存

下面以二维数组的动态分配内存为例。

2024-02-17 18:19:42 245

原创 数据结构编程题:Phone List

本题采用Trie树思路。

2024-01-21 12:38:21 585

原创 小白编程题:求组合问题

【代码】小白编程题:组合数问题。

2024-01-21 12:32:06 777

原创 小白编程题:圣诞礼物

圣诞节就要到了,同学准备了一个超级好玩儿的游戏--代码接力,acmer排成一队。首先,前两名acmer玩游戏。然后失败者走到队尾,赢得acmer将和下一个acmer比赛,等等。直到有acmer连续赢得n场比赛,则这个acmer成为赢家,将获得为TA准备的圣诞礼物。对于每个参与的acmer,我们都知道其敲代码的能量,在一场比赛中,能量强大的acmer获胜,如果能量相同,后来者获胜,确定谁能获得精心准备的礼物。

2024-01-19 19:06:43 424

原创 小白编程题:排列数问题

【代码】小白编程题:输出排列。

2024-01-15 20:16:55 305

原创 小白编程题:阶乘问题

【代码】小白编程题:阶乘问题

2024-01-15 20:13:03 367

原创 小白编程题:斐波那契(fibonacci)数列

【代码】斐波那契(fibonacci)数列

2024-01-15 20:10:17 353

原创 学习心得:二分查找

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

原创 队列板子

队列:先进先出的线性表。

2024-01-15 20:00:37 476

原创 栈板子

特点:栈单向延展。此处为仅有栈顶指针版,也可同时设栈顶指针+栈底指针进行表示。顺序栈的出栈操作是通过移动栈顶指针的“假删除”。

2024-01-15 19:58:55 369

原创 并查集板子

【代码】并查集板子。

2024-01-15 19:56:13 341

原创 来自ACMer的新年贺词

冒泡排序,选择排序,插入排序,快速排序,堆排序,归并排序,希尔排序,桶排序,基数排序新年帮您排忧解难。有向图,无向图,有环图,无环图,完全图,稠密图,稀疏图,拓扑图祝您新年宏图大展。最大流,网络流,标准输入流,标准输出流,文件输入流,文件输出流祝您新年顺顺流流。线性动规,区间动规,坐标动规,背包动规,树型动归为您的新年规划精彩。散列表,哈希表,邻接表,双向链表,循环链表帮您在新年表达喜悦。最长路,最短路,单源路径,所有节点对路径祝您新年路路通畅。祝大家新年渐进步步高。

2024-01-01 00:30:46 271

原创 手撸atoi函数

【代码】手撸atoi函数。

2023-12-31 14:37:01 382

原创 小白编程题:蛇形矩阵

蛇形矩阵是由1开始的自然数依次排列成的一个上三角矩阵(参看 输出样例)。要求输入整数n,构造并输出蛇形矩阵。

2023-12-31 11:36:33 321

原创 学习心得:函数指针和函数指针数组

返回值类型 (*函数指针变量名)(形参表);函数指针的返回值类型意为该函数指针能指向该返回值类型的函数。形参表是可选的,若要指向的函数中没有形参则缺省。勿忘函数指针的形参需要与被调函数形参及实参类型一致。函数指针的形参表中一般缺省形参名,只需声明形参类型即可。C语言中一般只建议在定义函数指针时缺省形参名。注:不要将函数指针(指向函数的指针)和指针函数(返回值为指针的函数)混淆,它们仅仅是在名字上相似,二者是截然不同的两种东西。//形参表的变量名一般省略,省略的写法一般只在函数指针时用到。

2023-12-28 20:35:40 407 1

原创 快读方法(一)——getchar和putchar

下一期将发布fread实现的快读。

2023-12-27 18:34:14 328 1

原创 小白编程题:单链表的简单应用

创建10个节点的链表。

2023-12-06 17:54:04 384 1

原创 小白编程题——统计一行文本的单词个数

本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

2023-12-05 20:01:21 837

原创 小白编程题:汉诺塔问题

【代码】经典递归思想问题实例——汉诺塔问题。

2023-12-05 18:28:50 408

原创 一种不破坏原数组排序的排序方法:指针数组|小白编程题:初进ACM

一些指针数组的学习心得

2023-11-24 19:57:15 477

原创 小白编程题:重复出现的数字

前几天,Freeway遇到了一个难题,想了好几天也没有解决,但是执着的他不甘放弃这个难题,想让大家帮忙解决一下。

2023-11-17 08:00:55 33 1

空空如也

空空如也

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

TA关注的人

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