- 博客(27)
- 收藏
- 关注
原创 刷题日志【3】
这个题比之前无脑dfs难一点,就是怎么处理这个边界问题,作者最初想着dfs统一对’O‘进行替换,在dfs内部用一个if做剪枝,一旦含有边界的数,就将改动的’O‘还原,然后这个消息用dfs的返回值进行返回(如搞一个bool的返回),但是发现这样会把边界的一块 'O'给拆散(因为return false,就不会再进行其他支路,意味着对联通块的遍历可能会在一遇到边界数就结束遍历,剩下一部分没有用check标记(这个check指的就是前面题目的标记量))题意简单说就是病毒扩散,感染数字相同且临近的数字。
2024-12-09 23:17:56
406
原创 二叉树概述
以层序遍历对二叉树进行收集(此时NULL也收入),在每个节点开始pop时,判断是否为NULL,一旦为NULL,则跳出循环,开始判断NULL之后的队列是否全为NULL,这里要使用队列,先根节点入队,根节点出队后,对应的左右子树节点入队,左子树节点作为根节点出队,再有对应的左右子树节点入队,以此类推。使用static参数,在函数内定义,只要把static的值最后return,在全局则可以不用,直接查static的值,这是带有换行效果的层序遍历,实现原理是需要记录每一层的个数,方便pop 完一层接一个换行。
2024-12-05 19:35:03
1594
原创 【数据结构】堆
堆排序的升降是由堆是大小堆决定的,如果建成大堆,那么顶就是最大,取到队尾就是升序。底层思想是先成堆,在取堆顶数与末尾交换,即此时末尾一定是最大或最小,再以此类推。时间复杂度:建堆O(n)+pop_topO( k*log(N) ) =>大堆是每个父节点都大于子节点,小堆则相反是每个父节点都小于子节点。思路2:建k小堆,比顶上大的就顶上交换,然后再调整堆,以此类推。思路1:直接对数据建大堆,顶上为最大,接着pop+top继续。时间复杂度:建堆O(K)+遍历O(N-K) =>空间复杂度:O(K)
2024-12-03 18:08:08
1129
原创 速通【vector】
/ 1、无参构造// 2、用n个val初始化vector// 3、迭代器区间构造// 任意合理迭代器区间都可(左闭右开)// 还可以用数组名(左闭右开)// 4、vector拷贝构造。
2024-12-03 17:28:28
865
原创 C++【模板】plus
在前面的文章中我们对于带有模板的stl容器的模拟实现都是在.h 中完成具体为什么不将其分开,这需要我们理解编译器对程序的编译。template<class T1> //T2特化为int,在类名旁边,同时类内没有T2,用 int 手动代换。而C++中,template<class T>可以让我们把一个类模板实例化出多种可能,同理,常量值在类中同样可行。#define N10 --->那么N在下面使用时始终为10,如果要使用其它值,就要重新定义新的宏。这样是会报错的,因为特化的func没有基于原来模板。
2024-12-03 17:12:32
490
原创 C++【模板】
同时,上面的Swap()不是main中进行交换的函数,上面的只是一个模板,编译器自动识别后会Call到对应不同函数位置,每个不同的T(int或float等等)的函数是不同的。这里是因为我们函数模板使用时,只有一个T,即编译器认为两个参数都是相同的T类型,所以我们可以使用不同的T来告诉编译器,这两个。来实现一个函数名多种使用方法的,但是不够,还是麻烦,每多一种搭配,总要多一个重载,能不能一个重载就实现----->模板(T只能在类中使用,如果想在类中声明,在类外定义,就要重新定一个模板T在函数中使用,
2024-12-03 17:11:13
375
原创 C++内存管理
/匿名对象(构造)+拷贝//隐式类型转换int->A(构造)+拷贝delete p1;return 0;验证malloc和free与new,delete关系class A {public::_a(a)~A() {private:int _a;delete p2;
2024-12-03 17:07:38
971
原创 stm32_点灯
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考ST:品牌名M32:32位微处理器F103:F代表主流C8T6:C:引脚类型8:64的flashT:封装类型6:温度范围对这个型号:APB2总线上对应的有:GPIO .TIM1 .SPI1 .USART1 .ADC1 .ADC2。
2024-10-28 10:00:00
415
原创 ros_乌龟跟随
这里可以发现:这个tf2相关的包可以实现转换坐标的功能,而上一个代码中广播也可以(不过手动),这两个对比起来,tf2更为专业,可以使用少量代码实现相同功能。这里使用的是topic通信,主要实现原理是:turtle运动时会有话题发布位置信息,我们要获得,并转化为相对位置。这里生成小乌龟使用的是服务通信, 可以对该服务进行查看(依次输入下列命令可以查看 )(非必须步骤)这里我还对service进行分析(非必须步骤)四.完整launch。
2024-03-26 22:35:36
977
原创 就决定是你了,冒泡排序!
我们将第二轮的第二个for放大观察,明显看出,第二个for会遍历无用的位置(这些位置已经正确),所以会出现:第二个for前面几个是有用的,后面会出现无用的,而这是因为第二个for的终止条件不能更新有关,我们需要一个会变的条件,根据后面已经有序,来减小第二个for的循环。“,举例刚进函数,里面第二个for走完后,一定最后一个是最大的,也就是最后一个的顺序是正确的,这个也体现在第二个for的结束条件上,i=0时,结束时是j=size-2;看过上面的冒泡,似乎在直觉上是最简单的,但是会有做无用功的情况。
2024-02-19 02:18:14
934
1
原创 扫雷(简单版)
游戏的测试界面,什么样的界面都是可以的,只要有,1和0的选择(当然,1,0也可以换成其他标志,不过,下面的部分代码就要改变)该模块是对全部游戏细节功能的集合(现在看,各位帅气漂亮的读者或许会看不懂,但没关系,该模块具体功能在下面会有介绍)如果使用清屏效果,每输入一次坐标(正确的),原显示内容将会清除,更新为新的雷区图。这里是我的game.h文件。其中,ROW是行(显示的),COL是列。这个模块是实现引导玩家和操作游戏进入的作用;WIN是胜利条件:即需要下几次不炸才能胜利。
2023-12-11 18:59:53
419
1
原创 AutoLeaders控制组——51单片机学习笔记(二)
①在这篇博客中,点阵屏部分的动态我本人并没有实现(STC89C52RC点阵屏点数太少,没有什么好玩的,就没搞),所以在博客关于动态实现时,就只是简要说明,②本博客中关于LCD1602模块功能使用时,没有LCD1602代码(这个代码是b站上江科大网盘直接提供)矩阵键盘,顾名思义,就是像矩阵一样的按键,从原理图可以看出P1_0 ~ P1_3的接法相同(控制列),而P1_4 ~ P1_7的接法相同(控制行),即从P1_0端给低电平,这样s4,s8,s12,s16 的一端就是低电平,通过判断P1_4。
2023-12-10 23:51:41
1623
1
原创 个人感想————学习编程
本人广东汕头人,学习的是机械专业,对电脑了解极少,c语言是我学的第一个编程语言,之前是通过b站大学自学(广东的卷迫使我更多的去了解学习技能),已过指针,算是一个脚趾头迈进C语言的大门,但是,总觉得自己对C语言的细节理解不到位。
2023-11-19 16:32:29
143
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅