首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回一1。 KMP算法用next数组对匹配过程进行了优化。K
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。 【说明】 模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回一1。 KMP算法用next数组对匹配过程进行了优化。K
admin
2017-11-28
51
问题
阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
模式匹配是指给定主串t和子串s,在主串t中寻找子串s的过程,其中s称为模式。如果匹配成功,返回s在t中的位置,否则返回一1。
KMP算法用next数组对匹配过程进行了优化。KMP算法的伪代码描述如下:
1.在串t和串s中,分别设比较的起始下标i=j=0。
2.如果串t和串s都还有字符,则循环执行下列操作:
(1)如果j=1或者t
=s[j],则将i和j分别加1;继续比较t和s的下一个字符;
(2)否则,将j向右滑动到next[j]的位置,即j=next[j]。
3.如果s中所有字符均已比较完毕,则返回匹配的起始位置(从1开始);否则返回一1。其中,next数组根据子串s求解。求解next数组的代码已由get next函数给出。
【C代码】
(1)常量和变量说明
t,s:长度为1t和1s的字符串
next:next数组,长度为1s
(2)C程序
#include
#include
#include
/*求next[]的值*/
void get next(int*next,char*s,int is){
int i=0,j=一1;
next[0]=一1;/*初始化next[0]*/
while(i
if(j==一1‖s
=s[j]){/*匹配*/
j++
i++;
if(s
==s[j])
next
=next[j];
else
next
=j;
}
else
j=next[j];
}
}
int kmp(int*next,Char*t,char*s,int it,int is)
{
int i=0,j=0;
while(i
if(j=一1 ‖ (2) ){
i ++;
j++;
} else
(3) ,
}
if ( j>=ls)
return (4);
else
return一1;
}
根据题干说明,填充C代码中的空(1)~(4)。
选项
答案
(1)j<1s (2)t[i]=s[j] (3)j=next[j] (4)i-j+1
解析
本题考查算法设计与分析以及用C程序设计语言实现算法的能力。KMP算法是一个非常经典的模式匹配算法。其核心思想是核心思想:匹配过程中字符对不相等时,不需回溯主串,而是利用已经得到的部分匹配结果将模式向右滑动尽可能远的一段距离继续比较。滑动的距离由next数组给出。该算法提出之后,有一些改进的思想,使得next数组的计算有多种方式。本题干不需要考生考虑如何计算next数组,已经直接给出计算该数组的C代码。只需要根据已经计算的next数组进行模式匹配即可。
在C函数kmp中,while循环是判断串s和t是否还有字符,因此空(1)处应填写“j<1s”。根据题干描述,“如果j=-1或者t
=s[j],则将i和j分别加1”,则空(2)处填入“t
=s[j]”,空(3)处是“否则,将j向右滑动到next[j]的位置,即j=next[j]”的情况,因此填入“j=next[j]”。空(4)处要填返回值,此处应该是能找到模式串的情况,此时i是主串匹配完成后的位置,j是子串的长度,则匹配的起始位置为i一j+1(从1开始)。
转载请注明原文地址:https://kaotiyun.com/show/kKDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
SSL是一个协议独立的加密方案,在网络信息分组的应用层和传输层之间提供了安全的通道。SSL主要包括SSL修改密文协议、SSL握手协议、SSL告警协议、SSL记录协议等,其协议栈见图7-16。请根据SSL协议栈结构,将(1)~(4)处空缺的协议名称填写完整。
如果在网络设计过程中划分了很多VLAN,则可采用VTP来简化其管理。交换机管理IP地址只能创建在(1)中,而VTP信息只能在(2)端口上传播。共享相同VLAN数据库的交换机构成一个(3)。不同交换机平台、不同的IOS版本支持的VLAN数量不同,从图6-18
阅读以下关于某硬件防火墙相关配置的技术说明,根据要求回答问题1至问题4。【说明】某单位在部署内部局域网时选用了一款硬件防火墙,该防火墙分别带有“WAN”、“LAN”“DMZ”、“FUN”等4个网络接口,支持Web界面、命令行等多种管理模式。该单位
非对称数字用户线(AsymmetricDigitalSubscriberLine,ADSL)是一种利用现有的传统电话线路高速传输数字信息的技术。ADSL技术可以充分利用现有铜线网路,只要在用户线路两端加装ADSL设备即可为用户提供服务。ADSL系统构
对一个大型校园网工程进行网络备份系统设计时,应考虑解决哪些主要的问题?请用150字以内的文字简要说明。备份就是对数据文件的备份,备份网络文件就是将所需要的文刊:复制到光盘、磁带或磁盘等存储介质上。这种备份网络文件的思路是否正确?请用200字以内的文字简
请用100字以内的文字说明该网管软件项目采用快速原型开发方法的优缺点。项目管理就是以项目为对象的系统管理方法,通过一个临时性的专门的柔性组织,对项目进行高效率的计划、组织、指导和控制,以实现项目全过程的动态管理和项目目标的综合协调与优化。除了本题涉及到
请用100字以内的文字说明该网管软件项目采用快速原型开发方法的优缺点。在最理想和保守的估计中加速开发进度要着重抓的共同环节是哪些?请用50字以内的文字加以说明。
请用100字以内的文字说明该网管软件项目采用快速原型开发方法的优缺点。根据试题的描述信息分析,在最理想的情况下,需要多少天才能完成此网管软件开发任务?如果按保守的估计,则需要多少天才可完成此开发任务?(请列出简要的计算过程)
在如图1-23所示的网络拓扑结构图中,被路由协议可以使封装后的数据包通过互连网络进行中继传输,它由(1)使用。【供选择的答案】A.PCIB.RouterA和RouterBC.Internet网D.Rcrate
阅读以下关于网络应用系统可靠性分析方面的技术说明,根据要求回答问题1至问题4。【说明】可靠性是一个网络应用系统能正常工作的能力,一般用平均故障间隔时间(MTBF)来度量。某网络应用软件研发公司正在开发一个嵌入式实时应用软件——宽带路由器的NanO
随机试题
[*]
患者,男。缺失,余留牙正常,可摘局部义齿修复,基牙该义齿基牙常采用间隙卡环,其体部的弯制要求是
实验研究中不依从性是指
在施工准备阶段,由监理单位负责的管理活动是()。
施工场地进行硬化处理的主要目的是()。
某工程的设备及工器具购置费为1000万元,建筑安装工程费为1300万元,工程建设其他费为600万元,基本预备费率为5%。该项目的基本预备费为( )万元。
某企业月初资产总额500万元,本月发生下列业务:①用银行存款归还长期借款20万元;②赊购产品30万元;③收到购货单位偿还的欠款15万元存入银行。则该企业月末资产总额为()万元。
当事人不履行合同义务或者履行合同义务不符合约定所应承担的民事责任,这是()。
并非所有出于良好愿望的行为必然会导致良好的结果。如果以上断定为真,则以下哪项断定必真?
ThepopulationofIndiaismuchlargerthan______ofSweden.
最新回复
(
0
)