数据结构第4章例题与答案5
来源:优易学  2010-1-14 18:16:54   【优易学:中国教育考试门户网】   资料下载   IT书店
19.在改进了的(无回溯)字符串模式匹配中,要先求next数组的值。下面是求nextval值的算法。 
type sar=array[1..m] of integer; 
     pty=array[1..m] of char; 
procedure next2(p:pty;var nextval:sar); 
{在模式p中求nextval数组的值} 
1      begin 
2      j:=1;nextval[1]:=0;k:=0 
3      repeat 
4        if (k=0) or (p[j]=p[k]) 
5          then [ j:=j+1;k:=k+1; 
6                 if p[j]=p[k] 
7                   then nextval[j]:=nextval[k] 
8                   else nextval[j]:=k ] 
9          else k:=nextval[k] 
10     until j=m 
11    end; 
算法中第4行有p[j]=p[k],第六行中也有p[j]=p[k]。两处比较语句相同。请分析说明此两处比较语句的含义是什么?分析此算法在最坏情况下的时间复杂度是多少?【北京邮电大学 1993 二、2(6分)】  
20.在字符串模式匹配的kmp算法中,求模式的next数组值的定义如下: 
next[j]=  
请问: 
(1)当j=1时,为什么要取next[1]=0? 
(2)为什么要取max{k},k最大是多少? 
(3)其它情况是什么情况,为什么取next[j]=1? 【北京邮电大学 1994  二(8分)】 
21.给出kmp算法中失败函数f的定义,并说明利用f进行串模式匹配的规则,该算法的技术特点是什么? 
【东南大学 1993 一、3 (9分) 1997 一、2 (8分) 2001 一、6 (6分)】 
22. 在模试匹配kmp算法中所用失败函数f的定义中,为何要求p1p2……pf(j)为p1p2……pj两头匹配的真子串?且为最大真子串? 【东南大学 1996 一、3(7分)】 
23.如果两个串含有相等的字符,能否说它们相等?【西安电子科技大学 2000软件 一、3 (5分)】 
24.设s1,s2为串,请给出使s1//s2=s2//s1成立的所有可能的条件(//为连接符)。 
【长沙铁道学院 1997  三、5 (3分)】【国防科技大学  1999 一 】 
25.已知:s =’(xyz)+*’,t =’(x+z)*y’。试利用联结、求子串和置换等基本运算,将 s 转化为 t 。 
【北方交通大学 1996 一、3(5分)】【山东科技大学 2002 一、6 (5分)】 
第五部分、算法设计 
1.设s、t为两个字符串,分别放在两个一维数组中,m、n分别为其长度,判断t是否为s的子串。如果是,输出子串所在位置(第一个字符),否则输出0。(注:用程序实现)【南京航空航天大学 1997 九(10分)】 
2.输入一个字符串,内有数字和非数字字符,如:ak123x456 17960?302gef4563,将其中连续的数字作为一个整体,依次存放到一数组a中,例如123放入a[0],456放入a[1],… … 。编程统计其共有多少个整数,并输出这些数。【上海大学 1998 一 (13分)】 
3. 以顺序存储结构表示串,设计算法。求串s中出现的第一个最长重复子串及其位置并分析算法的时间复杂度。【东南大学 2000 五 (15分)】 
类似本题的另外叙述有: 
(1)如果字符串的一个子串(其长度大于1)的各个字符均相同,则称之为等值子串。试设计一算法,输入字符串s,以“!”作为结束标志。如果串s中不存在等值子串,则输出信息“无等值子串”,否则求出(输出)一个长度最大的等值子串。 
例如:若s=“abc123abc123!”,则输出“无等值子串”;若s=“abceebccadddddaaadd!”,则输出“ddddd”。 
【华中科技大学 2001】  
10.编写程序,统计在输入字符串中各个不同字符出现的频度并将结果存入文件(字符串中的合法字符为a-z这26个字母和0-9这10个数字)。【西北大学 2000 四 (10分)】 
11.写一个递归算法来实现字符串逆序存储,要求不另设串存储空间。 【西南交通大学 2000 三、2】 
12.已知三个字符串分别为s=’ab…abcaabcbca…a’,s’=’caab’,  s’’=’bcb’。利用所学字符串基本运算的函数得到结果串为:s’’’=’caabcbca…aca…a’,要求写出得到上结果串s’’’所用的函数及执行算法。【东北大学 1998 一、1 (10分)】 
13.s=“s1s2…sn”是一个长为n的字符串,存放在一个数组中,编程序将s改造之后输出: 
(1)将s的所有第偶数个字符按照其原来的下标从大到小的次序放在s的后半部分; 
(2)将s的所有第奇数个字符按照其原来的下标从小到大的次序放在s的前半部分; 
例如: 
s=‘abcdefghijkl’ 
则改造后的s为‘acegikljhfdb’。【中科院计算所 1995】

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训