KMP算法KMP算法是一种字符串匹配算法,用于匹配模式串P在文本串S中出现的所有位置。例如S=“ababac,P=“aba”,那么出现的所有位置是13。在初学KMP时,我们只需要记住和学会使用模板即可,对其原理只需简单理解,不要过度深究,避免把自己绕进去,可以课后自己慢慢去画图理解。KMP算法将原本O(n2)的字符串匹配算法优化到了O(n).其精髓在于next数组,next数组表示此时模式串下标失配时应该移动到的位置,也表示最长的相同真前后缀的长度。例如P=“ababac”,S=“abababac”。当匹配到i=6,j=5,P[i+1]!=S[i]时,j不会移动到1重新开始匹配,而是移动到ne
知识点:1、基本输入输出语法:(1)如cin速度比scanf慢两者遇到空格回车会停止读入(2)若想读整行需要cin.getline()或gets函数(3)读到文件尾用scanf()!=EOF等等(4)占位符‘%’相关格式,如对齐方式,补0等。2、C/C++库函数以及stl模板(1)algorithm:sortnext_permutationlower_bound/upper_bound(2)queue(priority_queue)stackvectorsetmap基本操作等3、数据结构(1)结构体:注意结构体用sort排序,可自定义cmp函数,也可在结构体内重载“(2)字符串:string类
1.【问题描述】 请问2023有多少个约数?即有多少个正整数,使得2023是这个正整数的整数倍。【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。约数,又称因数。整数a除以整数b(b≠0)除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。一个数的约数包括1和它本身。【参考答案】6publicclassMain{publicstaticvoidmain(Stringargs[]){intans=0;for(inti=1;i2.【问题描述】 请问有多少组整数对l,r满足: 1.l和r都
前言: 在整个蓝桥杯考试中涉及串口的次数还是较多,这里写下这篇博客,记录一下自己的学习过程。STM32Cubemx配置: 首先,我们点击左侧的Connectivity选择USART1进行如下配置。 使能串口中断 在左侧的管脚配置上也要做出修改 到此为止,我们就配置完了,点击生成代码即可。代码部分: 发送的代码: 我是直接将上一篇博客采集到的电压值直接发送给了串口助手。 首先在main.c中引入头文件string.h,并定义一个数组专门用来存储要发送的数据#include"string.h"chartemp[20]; //定义数
1、B站视频链接:D02最短路Dijkstra算法_哔哩哔哩_bilibili题目链接:【模板】单源最短路径(弱化版)-洛谷#includeusingnamespacestd;#defineINF2147483647intn,m,s,a,b,c;constintN=100010;structedge{intv,w;};//终点和边权vectore[N];intd[N],vis[N];voiddijkstra(ints){ for(inti=0;id[u]+w){//三角形松弛操作 d[v]=d[u]+w; } } }}intmain(){ cin>>n>>m>>s; for(int
算法思想枚举(暴力算法)枚举算法(暴力算法)是一种通过逐一尝试所有可能解来解决问题的算法。它的基本思想是将问题的所有可能答案一一列举出来,并根据一定的判断条件来确定哪些答案是合适的。这种算法通常使用循环来实现,因为需要尝试所有可能的情况。两个例子:以“百钱买百鸡”问题为例,该问题要求找出在100元钱买100只鸡的情况下,公鸡、母鸡和小鸡各多少只。通过枚举算法,我们可以尝试所有可能的组合,并使用判断条件来确定哪些组合是符合要求的。具体来说,我们可以从0开始尝试公鸡的数量,然后逐渐增加母鸡和小鸡的数量,直到找到符合条件的组合。填写运算符的问题也可以使用枚举算法来解决。在这种情况下,我们需要尝试所有
按键实现单击、双击、长按前言一、硬件原理图二、构造按键结构体三、在定时器中断回调函数中检测四、按键处理函数五、现象前言基于蓝桥杯嵌入式开发板实现按键的单击,双击,长按检测与处理,使用定时器后台检测,防止占用前台资源,可以随便移植到任何单片机上。一、硬件原理图CubeMX配置,使用定时器3来检测按键二、构造按键结构体看注释#defineKEY_B1HAL_GPIO_ReadPin(KEY_B1_GPIO_Port,KEY_B1_Pin)#defineKEY_B2HAL_GPIO_ReadPin(KEY_B2_GPIO_Port,KEY_B2_Pin)#defineKEY_B3HAL_GPIO_R
题目描述给定一个n×m(n行m列)的矩阵。设一个矩阵的价值为其所有数中的最大值和最小值的乘积。求给定矩阵的所有大小为a×b(a行b列)的子矩阵的价值的和。答案可能很大,你只需要输出答案对998244353取模后的结果。输入格式输入的第一行包含四个整数分别表示n,m,a,b,相邻整数之间使用一个空格分隔。接下来n行每行包含m个整数,相邻整数之间使用一个空格分隔,表示矩阵中的每个数Ai,j 。输出格式输出一行包含一个整数表示答案。样例输入复制2312123456样例输出复制58提示1×2+2×3+4×5+5×6=58。对于40%的评测用例,1≤n,m≤100;对于70%的评测用例,1≤n,m≤50
📟作者主页:慢热的陕西人🌴专栏链接:力扣刷题日记📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言文章目录1.复杂度2.递归2.1递归实现指数型枚举2.2递归实现排列型枚举2.3递归实现组合型枚举2.4带分数2.5费解的开关:2.6翻硬币2.7飞行员兄弟1.复杂度2.递归2.1递归实现指数型枚举#include#include#include#includeusingnamespacestd;#defineN16intst[N];intn;voiddfs(intu)//0表示空,1表示不选,2表示选{if(u>n){for(inti=1;in;++i)if(st[i]==2)printf("%d",i)
🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握!文章目录一.题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码四.代码讲解(Java&Python&C++&JS分别讲解)