- 博客(12)
- 收藏
- 关注
原创 gets和fgets和get_s
fgets()只读取n-1个字符,所以,fgets读取到换行符、文件尾或读完n-1个字符便会返回。gets函数属于<stdio.h>,gets()函数会读取整行输入行,直至遇到换行符。s中,其实, 此函数还有一个很好的用处就是从标准输入流中读取字符串,而且。不用担心输入的字符个数超出了字符数组的大小而导致溢出的问题!fgets函数,都是读取 文件当中的 n-1个字符到。fgets与gets函数同属于<stdio.h>
2024-10-07 17:02:18
486
原创 getline与cin的区别
getline用于读入一段文本,包括空格,其他特殊字符,直到遇到换行符或结尾。cin主要读取基本数据类型(不会读入空格,制表符,换行符)在c++中,getline和cin都是读取数据。
2024-10-03 20:22:06
97
原创 结构体知识速通
struct 结构体名{成员列表例如:注:1.结构类型和结wa构变量是两个不同的概念,其区别如同int类型与int类型变量二者。2.结构类型中的成员名,可与程序中的变量同名,他们代表不同的对象,互不干扰。3.结构类型中的数据项,既可以是基本数据类型,,也可以是结构体类型。
2024-08-30 11:29:08
172
原创 时间复杂度
时间复杂度为一个算法流程中,常数操作数量的一个指标。常用O(读作big O)来表示,具体来说,先要对一个算法流程非常熟悉,然后写出在这个算法流程中,发生了多少常数操作,进而总结出时间复杂度为多少。一个操作如果和样本的数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。
2024-08-17 22:07:41
97
原创 离散化算法
离散化就是把无限空间中有限个体映射到有限空间中去,以此提高算法的时空效率。通俗的讲,就是在不改变数据的相对大小的情况下缩小数据。(本质上是一种哈希。以上是百度给的定义,直接看起来会觉得非常抽象。用通俗的语言来说就是:离散化的本质是建立了一段数列到自然数之间的映射关系(value -> index),通过建立新索引,来缩小目标区间,使得可以进行一系列连续数组可以进行的操作比如二分,前缀和等…使用一个新的数组,这个新数组的值是原序列的下标。
2024-06-08 19:47:34
510
原创 cin与scanf的关系
而cin是自动判断你的变量类型,比如一个char数据只能用默认的char获取数据。cin通过缓冲区输入,即输入首先存入缓冲区,等到缓冲区满时再自动刷新,这样cin的效率就很低了,但是保证了安全。scanf是用指针操作的,没有类型安全机制,比如一个int类型数据你就可以用%f获得输入,而不会报错,但在运行时会出现异常。scanf不能输入string。cin可以输入string。
2024-06-08 16:20:37
236
原创 前缀和与差分
假设有原数组 𝑎[ ]={𝑎1,𝑎2,𝑎3,...𝑎𝑛},现构造出一个数组 𝑏[ ]={𝑏1,𝑏2,𝑏3,...𝑏𝑛},使得 𝑎𝑖=𝑏1+𝑏2+...𝑏𝑖,那么 𝑏[ ] 就称为 𝑎[ ] 的差分,𝑎[ ] 就称为 𝑏[ ] 的前缀和。可以发现,差分与前缀和是逆运算。假如现在要将原数列 𝑎[ ] 区间 [𝐿,𝑅] 上的每个数都加上 𝑥,那么通过上述定义可以知道:第一个受影响的差分数组中的元素为首元素𝑏[𝐿],所以令𝑏[𝐿]+=𝑥,那么后面数列元素在计算过程中都会加上 𝑥。
2024-05-15 00:10:42
768
原创 二分算法与练习
关于二分算法的定义等基础知识在上篇文章中已有详细讲解,那么今天我们主要来讨论一下二分算法的具体操作。二分算法的常见操作分为二分查找,二分答案,浮点二分,二分模板,下面我们就分别来介绍。
2024-05-04 18:54:04
887
原创 双指针技巧
常见的双指针技巧分为两类,一类是快慢指针,另一类是左右指针。所谓快慢指针中的快慢指的是移动的步长,即每次向前移动速度的快慢。例如可以让快指针每次沿链表向前移动2,慢指针每次向前移动1次。一般用来解决链表中的问题。例如判定链表中是否有环,单链表是否为循环链表等等。而左右指针(对撞指针)呢,用于在已排序数组中找到两个数使其和为特定值,在字符串中判断是否回文,主要用来解决数组、字符串中的问题。例如二分查找等。
2024-04-22 21:05:56
963
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人