【KMP算法,数组】

news2024/11/29 12:38:29

文章目录

  • KMP算法
  • 数组
    • 数组的抽象类型定义
    • 数组的顺序存储
    • 三维数组

KMP算法

KMP算法设计思想:
利用已经部分匹配的结果而加快模式串的滑行速度,且主串S的指针i不必回溯,可提速到O(n+m);
定义next[j]函数,表明当模式中第j个字符与主串中相应的字符“失配”是,在模式中需重新和主串中该字符进行比较的字符的位置。
在这里插入图片描述

//KMP算法
int IndexKMP(SString S, SString T, int pos) {
	i = pos, j = 1;
	while (i < S.length && j < T.length) {
		if (j == 0 || S.ch[i] == T.ch[j]) {
			i++;
			j++;
		}
		else {
			j = next[j];//i不变,j后退
		}
		if (j > T.length) {
			return i - T.length;//匹配成功
		}
		else {
			return 0;
		}
	}
}

数组

  • 数组:按一定格式排列起来的,具有相同类型的数据元素的集合。
  • 一维数组:若线性表中的数据元素为非结构的简单元素。则称为一维数组。
  • 一维数组的逻辑结构:线性结构。定长的线性表。
  • 声明格式数据名 变量名称[长度];
  • 二维数组:若一维数组中的数据元素又是一维数组结构,则称为二维数组。
    在这里插入图片描述
  • 声明格式:数据类型 数据名[行数][列数];
//定义二维数组
//typedef int array2[2][2];
//等价于
typedef int array1[2];//定义的一维数组
typedef array1 array2[2];//定义的一维数组类型的二维数组

体现了二维数组的每一个元素都是一维数组。

  • 三维数组:若二维数组中的元素又是一个一维数组,则称为三维数组。
    由此类推:若n-1维数组中的元素是一个又一个一维数组结构,则称作n维数组。
    结论:线性表结构是数组表结构的一个特例,而数组结构又是线性表结构的拓展。
    数组特点:结构固定----定义以后,维数和维界不再改变。
    数组基本操作:除了结构的初始化和销毁之外,只有取元素和修改元素。

数组的抽象类型定义

n维数组的抽象类型定义
数据对象,数据关系,基本操作。
二维数组:若一维数组中的数据元素又是一维数组结构,则称为二维数组。
二维数组的逻辑结构:
①非线性结构:每一个数据元素既在一个行表中,又在一个列表中。
②线性结构定长的线性表:该线性表的数据元素也是一个定长的线性表。

数组的顺序存储

1.数组的特点:结构固定----维数和维界不变。
数组的基本操作:初始化,销毁,取元素,修改元素值,一般不做插入和删除操作。
所以,数组一般采用顺序存储结构表示。
注意:数组可以是多维的,但存储数据元素的内存单元地址是唯一的,因此,在存储数组结构之前,需要将多维关系转化为一维关系。
2.二维数组的两种存储方式:
①以行序为主
存储单元是一维结构,而数组是个多维结构,则用一组连续存储单元存放数组的数据元素就有次序问题。
在这里插入图片描述
一行一行的用链表连接起来。

②以列序为主
在这里插入图片描述
3.二维数组的行序优先表示
以行序为主序:
设数组开始存储的位置LOC(0,0),存储每一元素需要L个存储单位。数组元素a[i][j]的存储位置是:LOC(i,j)=LOC(0,0)+(n*i+j)*L;

三维数组

以页、行、列存放,页优先的顺序存储。
在这里插入图片描述
例:a[m1][m2][m3各维元素个数为m1,m2,m3.
下标为i1,i2,i3的数组元素的存储位置:
LOC(i1,i2,i3)=a+i1m2m3+i2*m3+i3;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1159851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ArcGIS微课1000例】0077:ArcGIS生成经纬网(shp格式)

使用ArcGIS制图的时候,可以很方便的生成经纬网、方里网及参考格网,但是在需要shp格式的经纬网,进一步在南方cass中使用经纬网的时候,就需要单独生成了。 如下图所示为全球大陆矢量数据,我们基于该数据来生成全球指定间距的经纬网数据。 在ArcGIS中,生成经纬网和方里网均…

Qwt 使用QwtDial绘制汽车仪表盘

1.概述 QwtDial是Qwt库中的一个类&#xff0c;用于绘制一个可旋转的仪表盘。 以下是类继承关系&#xff1a; 2.常用方法 void setOrigin(double origin) 设置仪表盘的原点角度&#xff0c;以度为单位&#xff0c;默认为0度&#xff0c;正值为逆时针旋转&#xff0c;负值为顺时…

两个字符串的删除操作

题目描述 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。每步可以删除任意一个字符串中的一个字符。 示例 思路 其实这道题的思路和最长公共子序列的思路一致&#xff0c;本题让我们求word1 和 word2 相同所需的最小步数&#xff0…

【QT】事件过滤器

事件过滤器1、给控件安装过滤器 2、重写过滤器事件bool eventFilter(两个参数); 基于上一个项目&#xff1a;【QT】事件分发器-CSDN博客 我的代码有问题&#xff0c;不能实现事件过滤器的功能&#xff0c;先记录下来 在头文件中要声明该函数。 #include "widget.h"…

单链表练习

单链表练习 相关内容&#xff1a; 1.再理解&#xff1a;LNode、*LinkList 2.单链表的整表创建&#xff08;头插法和尾插法&#xff09; 3.单链表的读取、插入、删除 4.单链表的整表删除 //单链表的初始化、创建、插入、删除、查找 //结点的结构体&#xff1a;数据域、指针域 …

Android应用程序的核心组件Activity

Activity组件 Activity组件是Android应用程序的核心组件之一&#xff0c;它提供了一个用户界面&#xff0c;用于与用户进行交互。每个Activity都是一个独立的屏幕&#xff0c;它可以包含用户界面元素&#xff08;如按钮、文本框等&#xff09;和逻辑代码&#xff0c;用于响应用…

玩了一下 Jenkins,最新版本 + JDK11

背景 今年五月的时候玩了一下 Jenkins&#xff0c;最新版本 2.414.3 &#xff0c;JDK 11 。本机有两个 JDK&#xff0c;只放到 Tomcat 里面了&#xff0c;看到了一个启动页面&#xff0c;后面有其他事情就忘记了。最近又想起来&#xff0c;觉得还是应该玩一下这么有技术含量的…

K8S的pod创建过程

创建流程图 用户发起请求创建deployment&#xff1b;apiserver收到创建资源的请求&#xff0c;apiserver对客户端操作进行身份认证&#xff0c;认证完成后接受该请求&#xff0c;并把相关的信息保存到etcd中&#xff0c;然后返回确认信息给客户端&#xff1b;apiserver向etcd…

【Python3】【力扣题】217. 存在重复元素

【力扣题】题目描述&#xff1a; 【Python3】代码&#xff1a; 1、解题思路&#xff1a;遍历每个元素&#xff0c;判断元素个数是否大于1。&#xff08;此方法不适用。超出时间限制&#xff09; class Solution:def containsDuplicate(self, nums: List[int]) -> bool:# 超…

优先队列----数据结构

概念 不知道你玩过英雄联盟吗&#xff1f;英雄联盟里面的防御塔会攻击离自己最近的小兵&#xff0c;但是如果有炮车兵在塔内&#xff0c;防御塔会优先攻击炮车&#xff08;因为炮车的威胁性更大&#xff09;&#xff0c;只有没有兵线在塔内时&#xff0c;防御塔才会攻击英雄。…

关于嵌入式rtthread系统与单片机芯片

简介 我估计已经有很久没更新了&#xff0c;近一年都在某个国企里工作&#xff0c;我做的就是嵌入式工程师的岗位&#xff0c;最近才刚刚退出来&#xff0c;想来说说自己的工作使用的软件和系统。 本身进公司的时候&#xff0c;其实做的就是写单片机的板子的程序的工作&#x…

8. 一文快速学懂常用工具——Linux命令(上)

本章讲解知识点 引言 指令学习 本专栏适合于软件开发刚入职的学生或人士&#xff0c;有一定的编程基础&#xff0c;帮助大家快速掌握工作中必会的工具和指令。本专栏针对面试题答案进行了优化&#xff0c;尽量做到好记、言简意赅。如专栏内容有错漏&#xff0c;欢迎在评论区指…

西门子PLC ModbusTcp通信访问网关后从站(梯形图篇)

这篇文章和之前的" 西门子PLC ModbusTcp通信访问网关后从站(SCL语音轮询状态机FB) "属于姊妹篇,这里我们主要介绍梯形图代码如何实现ModbusTcp轮询。 SCL代码篇 西门子PLC ModbusTcp通信访问网关后从站(SCL语言轮询状态机FB)-CSDN博客文章浏览阅读6次。西门子PLC的…

创建超过1G内存大小的程序

正常情况一个进程最大占用内存为1G一下&#xff0c;如果程序有需求要使用超过1G大小的程序&#xff0c;可进行如下操作 VS修改设置&#xff1a;属性--->链接器--->系统--->启用大地址 【选择是】 测试申请堆内存代码 #include <stdlib.h> #include <stdio…

【数据结构】树形结构所有路径复原为链表

目录 1. 树形结构可视化 2. 树形结构转为链表 此目标是要还原树形结构的所有路径。树形结构是一种常见的数据结构&#xff0c;它表示元素之间层次关系。在树形结构中&#xff0c;每个节点可能拥有一个或多个子节点&#xff0c;形成了一个分层的结构。为了还原树形结构的路径&…

Linux的账号管理

本章的学习感觉如果不做系统管理员&#xff0c;作为简单了解就可以了 前面介绍了&#xff0c;用户&#xff0c;组&#xff0c;other三个角色&#xff0c; 每个用户创建都会有uid与之对应&#xff0c;创建的用户基本信息在一下两个文件中&#xff0c;也是我们要介绍的内容&…

天猫双11:秋冬换季呼吸健康受关注 呼吸机、雾化器、血氧仪成交翻番

10月31日晚8点&#xff0c;天猫双11正式开售&#xff0c;健康消费热情集中释放。秋冬换季&#xff0c;呼吸健康备受关注&#xff0c;呼吸机、雾化器、血氧仪成交翻番&#xff0c;中药滋补经典方增长近400%。天猫健康数据显示&#xff0c;小仙炖、Ulike、Swisse、可复美、敷尔佳…

网课搜题小程序源码/小猿题库多接口微信小程序源码+自带流量主

网课搜题小程序源码&#xff0c;多接口小猿题库等综合网课搜题微信小程序源码带流量主&#xff0c;网课搜题小程序&#xff0c;可以开通流量主赚钱。 搭建教程 1、微信公众平台注册自己的小程序 2、下载微信开发者工具和小程序的源码 3、上传代码到自己的小程序 下载地址&…

车载网关让无人车栩栩如生:一款性价比车载终端案例

​无人车是汽车智能化的高形态,而连接无人车的大脑正是5G车载网关。今天让我们通过SV900-5G产品,感受一下无人车会带来怎样便利的生活场景。 详情查看&#xff1a;https://www.key-iot.com/iotlist/sv900.html 我们首先来到一座自动化工厂,几台小型AGV忙碌穿梭,它们都安装了SV…

跨国文件传输为什么要用专业的大文件传输软件?

跨国文件传输是许多跨国企业需要的基础工作&#xff0c;对于传输的质量和速度要求也是很严格的&#xff0c;随着数据量的不断增加&#xff0c;寻常传统的传输方式肯定是不行&#xff0c;需要新的技术和方式来进行传输&#xff0c;大文件传输软件应运而出&#xff0c;那它有什么…