- 博客(45)
- 收藏
- 关注

原创 我的第一篇博客之开始编程之路
我从九月份懵懵懂懂刚步入大学的新生,到现在已经能逐步适应了新的生活,我每天坚持打 代码,写代码写题一写就是几个小时,虽然痛苦,但是获得结果时我有时十分快乐的,以 后我一定会好好学习,更快的写出题目,打出更好的代码。
2023-11-19 10:39:14
118
1
原创 【洛谷题单】暴力枚举(上)
这题的核心点在于如何求出矩形数量,通常情况下可以多多列举几个例子,去分析,然后推出整体的公式。这是一道简单的dfs题,按照正常递归思路思考回溯即可这题主要是分析,分析出来如何做的写代码就简单了代码中有个重要的点——》就是在dfs中如何防止元素重复,也就是这个元素用过了,如何防止下次不再用。我们把这部分的代码拿出来分析首先定义了i<n;dfs(x+1);res-=a[i];//把dfs函数参数设置为三个。
2025-03-27 23:04:50
1042
原创 【算法思想】高精度
根据题目和代码,我们知晓了如何利用简单方法来计算高精度的题目,还需要注意的是创建数组的大小时,往往设置为设置精度的次方数例如如果说明数范围为10的10086次方,那么如果是加减法那么所有的数组大小都为【10090】//多一点保险如果是乘法,那么需要让c数组,也就是存储结果的数组=2倍的【10090】
2025-03-17 20:29:25
622
原创 【算法思想】前缀和
前缀和,这三个字,顾名思义表示是一个和,并且是某段序列的前缀的和。我们回到上一个题,如果我们提前知道第1个数到l-1个数的和,还有第1个数到第r个数的和,那么它们相减是不是可以直接得出结果,这个时间复杂度就是O(N)了;那么如何得出从第一个数到某个数的和呢?(也就是前缀和的具体做法先定义一个数组s[N],s[i]表示从第一个数字到第i个数字的和。我们输入一段长度为n的序列,如果是一个个输入的,那么每输入一个就加到s[i]上,并且s[i]还需要加上s[i-1]s[0]=0;i<=n;i++)
2025-03-15 16:45:23
591
原创 【算法题】乒乓球的11分制和21分制
根据上面题目,我们先来分析它需要让我们输入的东西,太会输入不定行数的几段字符串去判断在这一整段字符串里,可以得出怎样的比赛结果。显而易见,我们需要先解决输入问题,如何把输入很多行的代码归并到一起去使用呢?当然是要用到while(cin>>n)了,一般情况下,如果需要多次输入,就需要来用这一行代码,那么如何把所有输入的代码给放到一起呢?
2025-03-13 14:11:49
223
原创 【算法题】小鱼的航程
有人可能注意到了,这里用了类型,足够大,一般不会溢出。但是不是小题大用了呢?其实由于天数范围是1≤n≤10e6,而如果最大了,里程会非常大,因为每次有效日内都要加250,所以使用这个类型其实刚刚好。
2025-03-09 23:21:30
197
原创 【蓝桥杯真题】平方差
数学推导替代暴力枚举将问题转化为对数的奇偶性和模 4 性质的分析,避免了嵌套循环的O(n)时间复杂度。公式优化复杂度直接通过数学公式计算区间内奇数和 4 的倍数的数量,时间复杂度从O(R-L+1)优化至O(1),可处理L, R极大(如1e18)的情况。边界处理技巧计算奇数时用(R+1)/2而非R/2,确保右端点包含。计算 4 的倍数时用(L-1)/4排除左端点的左侧干扰。
2025-03-09 16:06:59
649
原创 dp_走方格(包含dfs分析,记忆化搜索)
类似题目解析:dp_最长上升子序列(包含dfs分析,记忆化搜索)-优快云博客题目链接:2067. 走方格 - AcWing题库题目图片:这个题目说有一个行为n行,列为m列,在这个长方形里从左上角走到右下角,只能往右走,或者往下——》翻译过来就是一个二维数组的某个值f[i][j]只有两个选择——变成f[i+1][j],或者变成f[i][j+1],求出方案数。(注意有个条件是不能走行号和列号同时为偶数的地方)这种有多种选择题,显而易见先用dfs思考,首先行号和列号同时为偶数——》选择不走正常的——》可以选择走
2025-03-08 23:13:11
782
原创 dp_最长上升子序列(包含dfs分析,记忆化搜索)
代码如下:(基本上大多数记忆化搜索是一样的模板,只需要先写一个判断,是否记忆数组里有这个参数对应的答案,如果没有再进行下一步,把所有的return改为等于s,再把s赋值到mem数组对应的参数对应的位置)一共n个整数表示序列,要输出一个数值严格单调递增的子序列,每个数都能成为开头,如果开头定了,那么这个序列的最小值也定了,则在选择后面元素时需要先判断是不是大于这个最小值,如果大于可以选择也可以不选择。所以f[][]的两个维度全是从n开始,但是这个地方可以优化一下——最大值对应的位置索引一定小于选择的值的。
2025-03-08 21:33:34
887
原创 dp_背包问题(涉及dfs分析,记忆化搜索)
这就是分析这个题目的所有思路了,一步一步优化,最后的代码的公式也就可以直接从dfs里照抄下来了,非常方便,容易理解。
2025-03-06 10:16:27
919
原创 c++ prime笔记①
变量只能定义一次,但可以声明多次,由于在多个文件中使用同一个变量,其定义只能出现在一个文件里,但其余要使用的话就要对其声明,不能重复定义。这个的结果又编译器而定,结果不是负数,是取模之后的值,我的电脑上显示为4294967295这个数字是4字节的无符号数的最大值。,但是这里的char不是指它是另一种类型,而是不同的编译器导致char有可能是无符号,也有可能是有符号整数,,如果有负数,那它不算在字面值里面,它只是表示对字面值取负值而已。定义在函数体内的内置类型的对象,如果没有初始化,则其值。
2024-05-14 20:45:57
503
原创 力扣刷题Day5——内涵动态规划讲解
动态规划是解决计算机中最优化问题的方法——通过避免重复计算来实现优化,利用哈希表等来保存中间的计算结果——所以也称为记忆化搜索——所以动态规划其实是空间换取时间动态规划其实还是要多加练习,自己分析分析,再结合案例就懂了,下面放几道动态规划的题目,可以自己练习搜索 - 力扣(LeetCode)
2024-05-08 14:13:54
1098
原创 力扣刷题Day4
1. 对于c语言中的l,需要求字符串长度,使用strlen即可,不要用sizeof,否则会报错2.注意,这种题目中带着每这个字眼的,需要想到利用for循环,然后举个例子,来判断不同情况下所需要的代码块3.注意在while循环中别忘了要让两个“指针”移动——++和--,否则会导致无限循环,出错。4.在for循环中i要加2k,注意这里的2k不能直接这样写,要写成2*k,否则会报错——如下:通过变换k来实现,不过这个没有if语句好想起来。
2024-05-07 09:35:43
605
原创 力扣刷题Day3
1)地址交换2)位运算来实现交换这里细讲一下位运算的交换:由于^符号是代表异或:也就是当两边的变量相同时取0,不同时取1,当a^a时=0,而a^0时这里可以列一个真值表来体现一下:当a=1,取1,当a=0,相同取0,所以这里推导出来了两个式子:a^a=0a^0=a那接着看如何把两个变量给交换了呢?这两个式子一结合起来,是不是就可以实现交换了呢?那实际上的代码怎么写呢?——a=a^b;b=a^b;a=a^b;
2024-05-06 12:58:58
529
原创 力扣刷题Day2
原因是——当转换链表后之前的head指针指向的不是链表的开头了,这时候要是返回head指针就不对了,而且如果只用cur指针的画,cur指针也在不断变换着,没办法保证返回的是整个链表。在某种情况下(12345的情况),如果把3、4交换完,则p指向3,q指向5,5是不需要再交换的,这时候其实就可以退出了。然后1和2交换完之后,再接着把指针移到3的位置,让虚拟结点的下一个为3,接着按上述步骤执行,直到没有需要交换的即可。那需要有一定的交换顺序,先让12交换,其中交换时的顺序为,文字版分析好了,现在来看代码。
2024-04-29 22:31:57
493
2
原创 图的存储结构之邻接矩阵
对于图来说,它的物理结构,是多对多的,而利用邻接矩阵也就是一个一维数组和一个二维数组来表示图,而链表有几种存储方式可以表示图:十字链表阿、邻接表、邻接多重表。下篇文章见ヾ(•ω•`)o。
2024-04-26 11:32:09
1301
原创 力扣刷题Day1
例如上图,把原本从1指向2的指针转换为了从2指向1的指针,那么这就需要有一个指针在2的位置,一个在1的位置,而假如2后面还有元素的话,还需要有一个指针知道这个2后面的结点地址,因此整体看下来,需要三个指针。想要反转链表,可以再建一个链表,然后赋值进去,但是太麻烦了,如果可以把指针换向,相当于反转链表的效果,那反转指针,就需要使用。如此,那什么时候结束呢?——当指向结点的指针为NULL时就不需要再进行修改指针了。这里就用while循环来写。
2024-04-24 08:34:29
417
原创 数据结构入门学习⑤——树和二叉树(万字笔记)
则其先序遍历序列就为AB#D##C## —— 判断是否为#,如果是则不创建结点 如果不是,则创建结点 其实本质上还是遍历——设定为某种序列 假如设置为先序序列,则在输入的字符不为#时就创建结点,先创建根节点,再创建左子树,再创建右子树。直到该结点的左结点为空,则出栈,接着遍历该结点的右子树 ==出栈的一直都是根节点== ==栈空则结束==先是指先遍历根,再遍历左子树,再遍历右子树 而左子树遍历也是先遍历左子树的根,再遍历这个左子树的左子树,最后是右子树,每个左子树和右子树要再进行一遍一系列同样的操作。
2024-04-12 14:33:24
715
原创 数据结构入门学习③——栈和队列
栈和队列都属于一种限制出入的线性表,不过它们所限制的方式不同栈属于限制线性表先进入到表里的最后才可以获取到——也就是“先进后出”,类比装在弹夹里的子弹,先装进去的最后才打出来。队列是限制——一端是进入表中的,一端是出表的,讲究"先进先出"的规则,这个其实可以类比排队的 ,先排队的总是可以先进行活动,而一端来人,一端出人。具有先进后出限制的线性表。有顺序栈和链栈两种形式。队列是一种限制进出的线性表,“先进先出”,在生活中这个性质比较常见些,比如排队买饭……
2024-03-25 23:15:56
1026
原创 c++入门详解,细节满满——最全最详细版
c++是在c语言的基础上加上面向对象——oop的特征,使其变为高级语言。内容将会持续更新,欢迎跟进后续(●'◡'●)
2024-03-16 16:37:51
417
原创 c++入门学习⑨——STL(万字总结,超级超级详细版)看完这一篇就够了!!!
STL(Standard Template Library)——每个字母分别代表标准、模板、库STL不是面向对象的编程——而是一种不同的编程模式——通用编程技术迭代器可以指向容器中的某个元素,通过迭代器可以指向容器中的元素,通过迭代器可以读写它指向的元素——因此它在某方面很像指针,初学者可以先把它看成指针使用它是一种广义指针,它是一个可以完成类似指针操作的对象迭代器是一个接口,指向容器的数据,然后算法通过这个迭代器去实现对容器的操作,相当于一个容器和算法的粘合剂。
2024-03-16 16:10:06
14255
2
原创 数据结构详解①——诸论
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或者多个操作在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级,算法的时间复杂度,也就是算法的时间度量,记作:T(n)=O(f(n))。表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度,f(n)为问题规模n的某个函数时间复杂度的计算方法通常称为——大O记法一般来说,
2024-03-06 13:52:48
710
1
原创 数据结构题目①——数组
注意重要的是,要看清题目是否给出有序数组,这是一个二分查找的条件第一次写出现的问题——1.if中的==而不是=2.left和right是数组的位置标号,而非数组内容3.要注意从开始就考虑是选取左闭右闭还是左闭右开4.注意函数最后要在while循环外有一个return 否则错误第二次写出现的问题——对于左闭右开的形式,从一开始就需要做出改变——1.定义时,右边的要定义的比左闭右闭多一位2.对于左边的变到中间,是中间+1,因为这里是闭区间3.对于右边的变到中间,就是中间了暴力解法二分法第一遍练习出现的问题
2024-02-29 21:46:21
957
原创 c++入门学习⑧——模板
在生活中其实模板这个词很常见——假如你要写一份简历,这时候需要准备一份模板,然后按照自己的情况来填写内容。而在编程中其实也是差不多的概念:模板实际上是先建立一个通用函数或者类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表,这种通用的方式称为模板。而模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码模板是一种泛型编程思想的实现,它分为类模板和函数模板,这两个模板都需要使用一个关键字——template。
2024-02-25 19:26:25
957
原创 c++入门学习⑦——继承和多态(超级详细版)
基类:被继承的类,又称为“父类”派生类:继承其他类的类,又称为“子类”简单来说:普通的成员前加上一个static关键字,就被称为静态成员。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。被关键字virtual修饰的类成员函数,而且子类中要重写虚函数(可加virtual也可不加)同一作用城,同名函教,参数的顺序,个数,类型不同都可以重载。函数的返回值类型不能作为重载条件(函数重载,运算行重载)有继承,子类重定义父亲的同名函数(非虚函数。
2024-02-20 20:34:33
3268
1
原创 c++入门学习⑥——友元和运算符重载
类做友元注意先声明building然后再定义朋友类,再定义建筑物类,再利用构造函数初始化朋友类,创建类对象,然后构造函数赋初值给类属性,重要的是,要先定义朋友类,再定义建筑类,不然程序会出错的。对于内置的数据类型,编译器知道如何运算。而c++中有自定义数据类型,程序往往不知道如何去计算自定义数据类型因此需要自己进行运算符重载,使用关键字operate先新建一个自定义数据类型——类,然后对于类对象的直接相加计算机不知道如何计算——》需要进行加号运算符重载 全局函数重载+运算符,这里是把两个类对
2024-02-19 12:28:50
1289
1
原创 c++文件操作
对于输入输出流解释:在C++中,输入输出是同流来完成的。输出操作将一个对象的状态转换成一个字符序列,输出到某个地方。输入操作也是从某个地方接收到一个字符序列,然后将其转换成一个对象的状态所要求的格式。这整个操作就像数据在流动,因此我们把接收输出数据的地方叫目标,把输入数据的来源称作源。因此我们可以把输入和输出操作看成字符序列在源、目标以及对象之间的流动。❀。
2024-02-18 20:37:40
3038
1
原创 c++内存的四大分区详解
这篇博客介绍c++四大分区的详解,其中也会涉及到有关new关键字的知识点对于程序员来说,认识内存的分区是一项基本功能。内存分为代码区,全局区,堆区,栈区,而在程序运行之前内存分为代码区和全局区,在程序运行之后才有栈区和堆区而堆区的数据需要程序员自己释放自己创建,使用关键字new和delete。
2024-02-18 12:19:38
1275
1
原创 c语言题目——数组排序
会可能卡着的点:在于不会把剩余的给加上,例如一个数组已经完成了,不知道如何将另一个数组全部输出而不导致错误。//一定要写大一点的空间,防止数组溢出。//下面是未输进去的数组全部输出。}//输入到一个数组中去。}//冒泡排序完成输出。}//基本的排序完成。
2024-02-03 23:27:57
355
1
原创 c++入门学习⑤——对象模型和this指针
成员变量和成员函数是分开存储的this指针指向被调用的成员函数所属对象它是隐含在每一个非静态成员函数的一种指针,不须定义空指针可以调用成员函数,但由于有this指针,容易有坑,出错。提高代码的健壮性用if来预防有空指针的调用,空指针可以访问,但是不可以去使用在正常的带属性的一个成员函数内,会导致程序崩溃的希望这篇有关c++对象模型和this指针的博客对大家有所帮助,欢迎大佬们留言o(* ̄▽ ̄*)ブ一起学习进步!!!
2024-02-02 21:45:45
796
原创 c++入门学习④——对象的初始化和清理
/初始化列表//初始化类中属性:1创建构造函数2.初始化列表// 构造函数():属性1(值1),属性2(值2)public://初始化列表给类属性赋初值;person(int a,int n) :Age(a),b(n)//注意这个冒号的位置,别写错了int Age;int b;//12先传给了p1中的int a,然后传入到Age里的a,这样Age就被这个数字赋值了,被初始化了。return 0;
2024-02-01 23:25:38
2446
1
原创 c语言大小写转换
这篇博客主要介绍3种有关大小写转换的方法,以及如何判断大小写的扩展c语言库函数希望这篇有关于c语言大小写转换博客能对大家有所帮助,欢迎大佬们留言或私信与我交流(●'◡'●)你要做冲出的黑马 而不是坠落的星星一起学习进步!!!
2024-01-31 12:31:19
1371
1
原创 c语言基础概念及易错点整理
main函数的位置可以在任意位置,但是如果在主函数之中调用了哪些函数,必须在main函数前对其所调用函数进行生命或包含其被调用函数的头文件。返回size_t的类型别名(这个有的编译器是专指64位无符号数的)(但是具体不知道是什么值)字符串其实就是char类型的数组,也就是说它不是标量,因此在C中不能用“==”比较。sizeof()里面的表达式不会真实的参与计算,而是根据表达式的类型来得出大小。负数求模的规则是,结果的正负号由第一个运算数的正负号决定。让局部变量的生命周期变成和程序的一样长,但是作用域。
2024-01-30 23:17:19
1068
1
原创 c++基本的输入输出
主要介绍C++ 编程中最基本以及最常见的 I/O 操作C++ 的 I/O 发生在流中,流是字节序列。字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等)(●'◡'●)
2024-01-29 23:27:01
328
原创 c++入门学习③——封装
万事万物都可称为对象对象有属性有行为,具有相同性质的对象,抽象后为一个类,比如人类类里包含对象属性、对象行为,有三大权限👉私有权限,公共权限,保护权限c++类和对象有关知识涉及较多,下期再c++友元、运算符重载等知识进一步讲解。(●'◡'●)
2024-01-28 19:42:35
1436
1
原创 扫雷游戏详解加代码
这是一个使用控制台实现的经典游戏,它的棋盘通常为9*9的格子(当然也有其他样式的,不过这个比较经典)它的玩法是点击一个坐标下的点,当这个点为雷的时候——>Game Over如果这个点不是雷,那么会告诉你这个点周围(这个小格子围一圈的八个格子)有几个雷,把除10个雷以外的非雷都找出来,排雷成功——>You Win定义两个棋盘,这里使用二维数组这里定义row和col的定义,为下面的排雷做好准备O(∩_∩)O。
2024-01-27 22:00:00
995
原创 C++ 之setw() 函数
setw()函数用于设置字段的宽度setw(n),其中n为数字,该函数用于接着的输出产生作用使用头文件int main()// 开头设置宽度为 4,后面的 runoob 字符长度大于 4,所以不起作用// 中间位置设置宽度为 4,后面的 runoob 字符长度大于 4,所以不起作用// 开头设置间距为 14,后面 runoob 字符数为6,前面补充 8 个空格// 中间位置设置间距为 14 ,后面 runoob 字符数为6,前面补充 8 个空格return 0;
2024-01-26 23:18:48
1484
1
原创 c++入门学习②
上篇文章介绍了c++的一些基本内容,这一篇会接着上文讲解c++的入门内容注:c++循环、数组、指针和c语言的一样,这篇文章就先不做讲解的(●'◡'●)c++入门学习(一)-优快云博客依照不同的数据类型定义不同变量,赋值即可。o(* ̄▽ ̄*)ブ下期预告:⭐c++类和对象。
2024-01-26 21:02:08
1015
1
空空如也
关于c语言,斗地主判断是否为三代一
2023-10-29
1~100数相加 为什么这个结果出不来?
2023-10-14
为什么按位与可以这样使用?
2023-10-13
如何去掉输出时后面的一行空白的
2023-10-13
c语言中两数相除的函数用法
2023-10-13
有关&运算符的问题,
2023-10-07
把10元以下的拆分成一角 二角 五角,这一步是怎么回事?
2023-10-04
输出1~100以内的素数,这样为什么错了呢?
2023-10-04
编程分段函数求值为什么这样不对
2023-08-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人