- 博客(66)
- 收藏
- 关注
原创 深入理解动态规划(dp)--(提前要对dfs有了解)
接下来的每组数据,第一行是一个整数 N ,表示一共有 N 家店铺,第二行是 N 个被空格分开的正整数,表示每一家店铺中的现金数量每家店铺中的现金数量均不超过1000。如果是用一个数组来存储一下的话,直接就省去了这棵大树的右分支,因为左分支中的3已经搜索过了,当以后遇到别的题或者n更大时这棵树的左右分支也会很大,所以省去的搜索也就更多。放到官网提交一下答案发现,时间超时,因为dfs的时间复杂度是2的n次方,超时是理所当然的事,还是要想办法优化。,直到子问题可以直接解决,然后把子问题的答案保存起来,
2025-01-24 22:27:21
1103
原创 带你深入了解双指针和前缀和的算法思想
最近自己在备考蓝桥杯,如果有和我一样目标的同学,可以一起加油!双指针和前缀和算法都是对于编程竞赛很重要的思维,希望这篇文章能帮助到你!
2025-01-22 18:02:49
1038
原创 超细二分(不看血亏)
1.其实通过画图分析不难发现,第一题和第二题是一种类型,第三题和第四题是一种类型,所以画的图和代码几乎是一样的,但是不一样的地方在于返回值(是返回L还是返回R??)这是要根据题意的。2.我不知道你们有没有发现,其实上面我所写的代码中isBlue函数其实可有可无。熟练之后可以直接在if语句中判断即可,分装一个isBlue函数是为了正好的理解二分。
2025-01-20 09:00:51
962
原创 带你爆搜(c++搜索、递归、枚举)需一定的递归基础
我们发现上面的代码通过不了所有的测试用例,不是超时或是其他问题,这时我们就要想我们的代码范围是否包含了所有的可能结果:int n;return;res++;i <= 10;i++)return;i <= 3;tmp[x] = 0;cin >> n;i <= res;
2024-12-06 10:51:50
647
原创 一道小题带你入门dfs算法:递归实现指数型枚举
从1--n这n个整数中随机选取了任意多个,输出所有可能的选举方案输入一个整数n每行输出一种方案同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开对于没有选任何数的方案,输出空行。
2024-11-27 21:45:24
335
原创 相等日期问题(c++方法解决)
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。例如,2022年11月13日满足要求,因为 2+0+2+2=(1+1)+(1+3)。请提交满足条件的日期的总数量。
2024-11-13 09:15:42
235
原创 常用STL容器(c++)
(1)有些时候想开一个数组,单数却不知道应该开多大长度的数组合适,因为我们需要用到的数组可能会根据情况变动。这时候我们就需要用到动态数组。(2)c++中的动态数组写作vector。
2024-10-13 12:28:14
998
原创 计算机二级C语言(公共基础部分)
N=2的n次方-1;n0=2的n-1次方 这四个公式适用于二叉树,后两个公式适用于满二叉树 (叶子结点=n0 度为2表示n2=5 叶子结数是N=5)(后两个公式中的n是指层数)的存储空间为Q(1:50),初始状态为front=rear=50.经过一系列正常的入列与退队操作后,front=rear=25,线性表的特点:表中的每个数据元素,除了第一个外,有且只有一个迁建,除了最后一个外,有且只有一个后件。选D 如果top初始状态大于S(a,b)中的b,说明该栈是从m开始的,最小是1,所以0不可能选D。
2024-05-19 12:50:20
1620
1
原创 c++:自定义数组类封装
无参构造有参构造析构函数赋值函数遍历函数拷贝操作访问数组长度的函数重载operator=int main()//调用有参构造,开辟十个元素的数组//赋值操作i++)//遍历操作i++)cout<<endl;//拷贝操作//调用拷贝函数//遍历array2数组i++)cout<<endl;//等号操作符//遍历array3数组i++)cout<<endl;return 0;
2024-05-05 23:50:56
463
原创 关于c++中的操作符:new和delete
C语言中有两个函数用于动态开辟、释放内存----malloc和freec++中又引入了两个操作符----new和delete来用于开辟、释放内存说到这应该对这两个操作符有所了解了,用法和C语言中的malloc和free差不很多,但是还是有所区别的,比如第一点就是标题中所写的那样new和delete都是操作符不是函数,但是如果只有这一点区别也没必要在引进新的来代替malloc和free,所以带着疑问继续探索吧!!!
2024-04-23 20:52:39
497
原创 关于函数重载(c++)
定义其函数类型定义一个指向这种函数类型的指针类型直接定义函数指针return 0;//1.定义其函数类型//2.定义一个指向这种函数类型的指针类型//1.fp = func;fp(10, 20);//3.直接定义函数指针fp3=func;return 0;
2024-04-12 09:44:29
319
原创 c++语言增强的地方
/一个指向常整形的常指针(指针和它所在的内存空间,均不能被修改)const int* c;//c是一个指向常整型数的指针(所指向的内存数据不能被修改,但本身可以修改)//常指针(指针变量不能被修改,但是他所指向的空间可以被修改)答:如果对一个常量取地址,编译器会临时开辟一个空间,让这个指针存放这个临时空间的地址。c++中const修饰的变量在赋值时并不是在栈区开辟空间,而是在符号表。最后a会改变成为70,说明被const修饰的a并没有成为常量。//代表一个常整形数。
2024-04-09 07:36:36
527
原创 关于c++的命名空间
include<iostream> //iostream提供了一个叫命名空间的东西,标准的命名空间是:std//命名空间//方式二://声明空间中的一个变量//方式三:(最简便的方法)#if 0//方式一://cout就是黑屏幕 endl是换行符#endifint a = 0;cin >> a;//相当于C语言中的scanf输入函数return 0;//定义一个普通的命名空间int g_a=10;return 0;
2024-04-07 23:11:35
328
原创 linux命令大全(涵盖所有命令)
文件管理查看文件信息:ls 输出重定向命令:> 分屏显示:more 管道:| 清屏:clear 切换工作目录:cd 显示当前目录:pwd 创建目录:mikdir 删除目录:rmdir 删除文件:rm 建立连接文件:ln 查看或者合并文件内容:cat 文本搜索:grep 查找文件:find 拷贝文件:cp 移动文件:mv 获取文件类型:file 归档管理:tar 文件压缩解压:gzip 文件压缩解压:bzip2 文件压缩解压:zip,unzip 查看命令位置
2024-04-06 20:58:03
170
原创 细讲内存四区
概念:既能读又能写的内存对象,称为变量;若一旦初始化后不能修改的对象则称为常量。1.程序通过变量来申请和命名内存空间 int a=0.变量定义形式:类型 标识符,标识符,标识符;1.思考数据类型和内存有什么关系吗?2.c/c++为什么会引入数据类型?//typedef和结构体结合使用。变量:一段连续内存空间的别名。2.通过变了名访问内存空间。
2024-03-30 20:54:46
535
原创 单链表的定义
typedef struct LNode//定义一个单链表结点类型//数据域 //每个节点存放一个数据元素//指针域 //指针指向下一个结点}LNode;增加一个新的结点;在内存中申请一个结点所需要的空间,并用指针p指向这个结点typedef 关键字--数据类型重命名typedef struct LNode//定义一个单链表结点类型//数据域 //每个节点存放一个数据元素//指针域 //指针指向下一个结点//初始化一个空的单链表L=NULL;//判断单链表是否为空else。
2024-03-09 17:55:39
516
原创 顺序表的定义和初始化(本质其实和我以前发的通讯录项目差不多)
用顺序存储的方式实现线性表的顺序存储。顺序存储:把逻辑上相邻的元素存储在物理位置也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。
2024-03-04 17:31:28
371
1
原创 线性表的定义和基本操作
线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表,若用L命名线性表,则其一般表示为:ai是线性表中“第i个”元素线性表中的位序a1是表头元素;an是表尾元素除了第一个元素外,每个元素有且只有一个直接前驱;除最后一个元素外,每个元素有且仅有一个直接后继。
2024-03-04 16:16:38
400
1
原创 深入理解算法的空间复杂度
无论问题规模怎么变,算法运行所需的内存空间都是固定的常量,算法空间复杂度为:S(n)=O(1)注:S表示“space”算法原地工作----算法所需内存空间为常量。
2024-03-03 21:44:41
384
原创 文件操作(超详细版)
本章重点为什么使用文件什么是文件文件的打开和关闭文件的顺序读写文件的随机读写文件读取结束的判定为什么使用文件我们前面学习结构体时,写通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如...
2024-03-02 15:18:19
624
原创 谈一谈在民办本科应该明白的那些事
前言:本人是一位山东民办本科的大一学生,学费两万多,教师、科研甚至于供暖资源落后于那些公办或者名牌大学,自己家境一般(农村),但我还是心存梦想(比如两三年后考上了一所不错的大学的研究生、或是运气好了那么一点去了大厂有一份不错的收入),不知有没有和我一样处于激情又有些迷茫的同伴,为了对未来的规划和激励,我想了又想写了篇文章。或许,我也不知道一年或者多年之后的自己,按照那时的学识和眼界同不同意现在所看待的问题。 目录关于三观关于理想关于大学别让自己的思想限制了自己避免这些事发生在你的职业生涯上想多了会焦虑,做多
2024-03-01 19:29:42
446
1
原创 真正学习数据结构之前所需要了解的那些概念
前言:数据结构的知识是和C语言所挂钩的,尤其要学好c语言内存开辟、结构体、指针等方面的知识。前言:数据结构的知识是和C语言所挂钩的,尤其要学好c语言内存开辟、结构体、指针等方面的知识。数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合,数据是计算机程序加工的原料。数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合,数据是计算机程序加工的原料。的数据元素的集合,是数据的子集。二、数据结构的三要素。
2024-02-28 17:51:27
440
1
原创 关于动态内存分配的笔试题(二)
分析:使用了一块已经被释放的内存str,这就是非法访问内存。并且free释放str指向的空间后,并不会把str置为NULL,所以if判断没有意义。分析:变量x属于栈区,当f1函数调用结束时,栈区的内存会自动还给操作系统,所以x的那块地址已经是未知的,所以再将其地址作为函数的返回值就会存在非法访问内存的问题。分析:定义指针时没有给指针初始化,又紧接着给指针赋值,这会出现非法访问内存问题。问题:程序输出world,但非法访问内存(篡改动态内存区的内容)问题:非法访问内存(野指针问题)
2024-02-17 23:00:22
344
1
原创 关于动态内存开辟的两道经典笔试题
跟题目一类似,当Test函数调用GetMemory函数之后,数组p会还给操作系统,所以虽然str指向的初始位置和p的起始位置相同,但是后面的内容已经不是“helllo world”,所以是一些随机值,再将这些随机值打印就会出现非法访问内存的现象。1.GetMemory函数中参数p只是str的一份临时拷贝,因为是值传递(也就是只传的是str这个指针,并没有传str这个指针的地址),所以在调用完GetMemory函数之后str还是原来的空指针。答案:该运行程序会崩溃,具有非法访问内存的现象。
2024-02-17 21:56:07
392
1
原创 linux系统中命令的使用方式和技巧(二)
该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简而言之,保持文件原有属性。若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。cp命令的功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令。gzip xxx.tar 自动在当前目录生成:xxx.tar.gz。压缩打包:tar -cvjf xxx.tar.bz2所需文件。压缩打包:tar -czvf xxx.tar.gz所需文件。查找当前目录下所有后缀为.sh的文件。
2024-02-07 22:26:48
358
1
原创 用C语言完成通讯录小项目(无动态内存版本)
从查找、删除、修改三个功能上可以看出代码冗余的问题,因为要实现这三个功能模块必须要从通讯录中找到目标量,所以我们可以将这个查找目标用函数来实现,之后直接调用该函数即可。contact.h:只做函数的声明和一些其他预处理指令所进行的,编译后不产生代码。制作一个通讯录项目,通过通讯录能够存入好友的id号,姓名,性别,手机号和地址。菜单显示通讯录的主要功能:增加、删除、查找、修改、排序、显示、退出、保存。首先将功能模块在test.c中用函数的形式做成一个菜单。将大致思路写在test.c的mian函数中。
2024-02-03 22:33:53
364
1
原创 【c++】引用的介绍
前言:我在讲引用的定义方法的时候,得出了引用变量名和实体所指向的空间是一样的,所以我们再计算一下引用和指针的大小等一些问题。由此我们可以得出,引用的大小和类型有关系,int类型的引用大小就为4,char类型的引用大小就为1。通俗点说:每个人都有一个大名,可能也有一个小名,但是都是指一个人,引用也就是一个变量的别名。注:引用变量编译器不会为这个变量单独开辟一块内存,它和它引用的变量使用同一块内存。所以说明:a和p指向的空间是一置的,a改变p也会改变。我们可以发现指针和引用的实现是完全一致的。
2024-01-31 18:53:25
326
原创 【c++】引用的用法
一、引用的介绍引用还有一个别的叫法:取别名通俗点说:每个人都有一个大名,可能也有一个小名,但是都是指一个人,引用也就是一个变量的别名。1.引用的概念:引用不是定义一个别的变量,而是给一个变量取别名注:引用变量编译器不会为这个变量单独开辟一块内存,它和它引用的变量使用同一块内存2.引用的定义方法变量类型& 引用变量名...
2024-01-31 18:52:38
356
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人