- 博客(27)
- 收藏
- 关注
原创 动态规划之子序列问题1
以leetcode300题为例此题最为经典,所有的算法书在讲子序列问题时都以这个为模板题,后面的题可以按照此题的分析方法进行分析。
2025-05-05 17:40:58
270
原创 动态规划之最大子数组(环形数组)
第二种就是你可能前面一部分和后面一部分成环了,你求的是最大,那里面就剩最小。无非就两种情况,一个是你在普通数组的情况下能求最大值,也就是你没有成环。环形数组也就是在普通数组上的变形。
2025-05-04 16:05:43
67
原创 动态规划之路劲问题3
dp[i][j]:表示到达这个位置时的最少的健康点数,如果我们以这个表示我们的状态,就会发现有问题,因为这个ij位置的健康点数不仅仅受下一步(也就是往右和往下)的影响,还受后面很多个路径上的点的影响,比如以例题为例:一开始我们如果初始值为3,走完-2还剩1,那我们走不出-3和-5,如果我们初始值为6,走完-2,-3,3,1,但是到-5时变为0,所以初始值为7才是对的,所以我们ij位置不仅仅是受最近的i j-1和i-1 j位置影响,还受多个位置的值影响。以dp[i][j]为结尾,最少的健康点数。
2025-05-03 17:56:01
386
原创 STL之list容器
1.list的底层是双向链表结构,双向链表中的每个元素在互不相关的独立结点中,在结点中通过指针指向前一个元素和后一个元素2.list是可以在常数范围内在任意位置的插入和删除的序列式容器,并且该容器可以前后双向迭代3.vector的优点:支持随机访问,间接的就支持了排序/二分查找/堆排序等缺点:1.头部和中部的插入效率低,需要挪动数据2.插入数据空间不够需要增容,增容需要开新空间,拷贝数据,释放旧空间list的优点:没有增容代价,且任意位置插入都是0(1);
2025-05-03 12:25:01
1212
原创 STL之vector容器
1.vector是可变大小数组的容器2.像数组一样,采用连续的空间存储,也就意味着可以通过下标去访问,但它的大小可以动态改变3.每次的插入都要开空间吗?开空间就要意味着先开临时空间,然后在拷贝旧的到新的上面,在释放原来的,就时间而言,这是一个相对代价很高的任务;显然这是不行的,vector的分配策略:会分配一些而外的空间以适应可能的增长,例如我们平时说的以1.5或者2倍的方式增容,不同的库选择不同的策略权衡空间的使用和重新分配,以至于在插入一个元素时能在常数时间内插入;
2025-05-02 13:41:05
1216
原创 STL之string容器
c_str():返回c格式的字符串 (在string类中是以size表示有效大小,c风格是以\0表示结束,返回c格式的字符串是在末尾加\0,而string在处理字符串是没有\0结尾表示结束,而是用size)在c语言中,字符串以"\0"结尾的一些字符的集合,并且提供了一系列的str函数,但有时候可能会越界访问,且库函数是与字符串分离的,不太符合OOP的思想,为了方便管理,c++封装了一个类。size():返回字符串的有效长度(一般用这个,length比较早期,size是与其他容器统一)
2025-05-01 12:55:50
1012
原创 Linux进程控制
fork()函数初识:作用:在当前进程创建一个子进程,新进程称为子进程,原进程称为父进程返回值:pid_t实际是一个int类型,typedef过,子进程返回0,父进程返回子进程id,出错返回-11.分配新的内存块和数据结构(PCB,页表,进程地址空间)给子进程2.将父进程的部分数据结构内容拷贝给子进程(继承)3.添加子进程到系统进程列表当中4.fork()返回,开始调度器调用,调度器可能会选择父进程继续执行,也可能会选择子进程执行,这取决于调度算法和系统的当前负载情况。注意:在现代操作系统中,
2025-04-26 14:54:07
1138
原创 Linux进程概念
管理:先描述后组织如何描述:简单来说就是用结构体struct如何组织:简单来说就是用所学到的高效的数据结构,链表等等概念:进程是指在系统中正在运行的一个程序实例,是操作系统进行资源分配和调度的基本单位。当一个程序被加载到内存中并开始执行时,它就成为了一个进程。
2025-04-24 16:53:54
829
原创 c++之类与对象(third)
构造函数赋值:在创建对象时,编译器会自动调用构造函数进行赋值,之前简单来说叫初始化,但这里不能叫做初始化,因为初始化只能初始化一次,在构造函数体内可以重复赋值,所以出现了初始化列表。初始化列表:以一个:(冒号)开始,接着是以,(逗号)分隔的数据成员列表,每个”成员变量“后面跟一个放在括号中的初始值或表达式注意:1.每个成员变量在初始化列表中只能出现一次(对应初始化只能初始化一次)2.类中包含以下成员,必须放在初始化列表位置进行初始化:引用成员变量const成员变量。
2025-02-18 20:57:27
384
原创 c++之类与对象(second)
这样写就会有问题,问题在于test函数的参数是const Date&d,d所指向的内容是不可以修改的,但是在d里面调用了Printf,参数是隐含的this指针,Date const*this,这个是可以修改this所指向的内容,这说明权限放大了,要加const去修饰this指针,也就是void Print()const。在某些情况下,如果你不想直接暴露对象的真实地址,可以返回NULL,或者获取对象地址需要进行额外的控制和处理,通过&操作符重载,可以实现自定义的逻辑,而不是简单的返回对象的真实地址。
2025-02-18 14:57:19
1508
原创 c++之类和对象(first)
/类体:由成员变量和成员函数组成//注意有分号,类似于一条语句class为关键字,classname为类的名字,{}为类的主体,定义完后有分号;类中的元素叫做成员,类中的数据称为成员变量或者类的属性,函数称为成员函数或者类的方法1.声明和定义都在类体内注意:如果成员函数在类中定义,可能会被当初内联函数处理2.声明放在.h文件中,定义放在.cpp文件中(这种更推荐,更符合工程的思想)但定义时要声明是在哪个类中的。
2025-02-17 21:53:15
1827
原创 c++之范围for
对于以前要遍历一个数组,需要程序员自己书写数组的范围(sizeof)因此c++中引入范围for,避免因为范围书写错误而导致程序有意想不到的结果。
2025-02-17 14:45:01
332
原创 C++之auto
也就是说auto相当于一个类型声明时占位符,编译器会在编译期间将auto替换为变量的实际类型。在早期的c语言和c++auto仅仅是一个自动存储器的局部变量,也就是生命周期出了代码块就没了。实际编译器只对第一个类型推导,然后在用推导出来的类型定义其他变量,所以c和d那条编译不过。但c++11中auto是一个全新的含义:自动推导类型,编译器会在编译时期推导。这样是编译不过去的,必须要auto b=a;auto不能作为形参类型,编译器无法对a的实际类型推导。两个一样,没有区别,b和c的类型都是int*
2025-02-17 14:28:13
247
原创 c++之内联函数
内联函数可以提高效率,但代码很长或者有循环/递归都不适用,只适合短的代码,比如交换两个值的函数?并且加了inline是否会在相应的位置展开?取决于编译器?inline只是给编译器一个建议并不是一定会展开。内联函数不建议定义和声明分离,分离会导致链接错误,因为inline被展开之后就没有函数地址了,这样就链接时就无法找到函数。
2025-02-17 12:13:27
206
原创 c++之函数重载
3为函数名的字母个数,ii为两个类型int int,那么在连接时就可以辨认出是哪个函数,例如add(int,int)就会找到<_Z3addii>,如果是add(char,char)就会找到<_Z3addcc>,windows也是同样的道理,只是命名风格不一样,那么通过这样看,如果是返回类型不一样是不能构成函数名重载的,只要参数不同就可以构成函数名重载,参数的个数,类型或者顺序不同。是一个固定的前缀,它是修饰后的名字起始标识,用于告知链接器这是一个经过 C++ 名字修饰的符号,编译器和链接器看到。
2025-02-12 20:40:42
514
原创 c++之缺省参数
注意:1.半缺省值参数必须从右向左依次并且连续给出,不能间隔给,也就是可以给cb,不能c a。2.缺省参数不能在函数的声明和定义中同时出现(一不一样都不能同时出现)在声明或者定义时给参数一个默认值,如果调用参数时没有实参,则用缺省值(默认值);注意:传参如果像下面这样就会报错,不允许前面的不传,后面又传。1.全缺省参数:顾名思义就是全部参数都有缺省值。当传参只传一个时,a就用实参,bc用缺省值。顾名思义就是给一半(没有给全)的缺省值。当都不传参时,就都用缺省值。当传全部时,都用实参。
2025-02-12 19:04:03
181
原创 c++入门之命名空间
命名空间:在c/c++中,有很多的变量名,函数或者类的名称存在于全局作用域中,为了避免冲突和更好的管理命名,使用命名空间能够对这些标识符本地化(也就是只有在这个命名空间的域下才可以使用)以避免命名冲突和名字污染。一个命名空间就相当于定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。在c++中使用cout输出,cin输入,并且使用<<(可以自动推导类型不用%d等)所以一般大型项目为了避免命名冲突会std::cout<<a<<endl;2.使用using把命名空间里的某部分内容展开。
2025-02-11 21:54:01
447
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人