题目详情

阅读下列说明和 C 代码,回答问题 1 至问题 3 ,将解答写在对应栏内。【说明】计算两个字符串 x 和 y 的最长公共子串( Longest Common Substring )。假设字符串 x 和字符串 y 的长度分别为 m 和 n ,用数组 c 的元素 c[i][j] 记录 x 中前 i 个字符和 y 中前 j 个字符的最长公共子串的长度。 c[i][j]满足最优子结构,其递归定义为:

中级软件设计师,章节练习,数据结构与算法

计算所有 c[i][j](0 ≤ i ≤ m , 0 ≤ j ≤ n) 的值,值最大的 c[i][j] 即为字符串 x 和 y 的最长公共子串的长度。根据该长度即 i 和 j ,确定一个最长公共子串。 【 C代码】 (1) 常量和变量说明x , y :长度分别为 m 和 n 的字符串c[i][j] :记录 x 中前 i 个字符和 y 中前 j 个字符的最长公共子串的长度max : x 和 y 的最长公共子串的长度maxi, maXj :分别表示 x 和 y 的某个最长公共子串的最后一个字符在 x 和 y 中的位置(序号) (2)C 程序 #include

正确答案及解析

正确答案
解析

【问题1】(1)x[i-1]= =y[j-1](2)max=c[i][j](3)c[i][j]=0 (4)i=maxi-max【问题2】(动态规划、 O(m×n)或O(mn)【问题3】AB根据题干和C代码,计算出下表的值。

中级软件设计师,章节练习,中级软件设计师

最大值为2。在计算过程中,我们记录第一个最大值,即表中阴影部分元素,因此得到最长公共子串为AB。

你可能感兴趣的试题

单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.0
  • B.1
  • C.2
  • D.3
查看答案
单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.1、1
  • B.1、2
  • C.2、2
  • D.2、3
查看答案
单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.3
  • B.4
  • C.5
  • D.6
查看答案
单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.V(S3)和V(S5)V(S6)
  • B.P(S3)和V(S5)V(S6)
  • C.V(S3)和P(S5)P(S6)
  • D.P(S3)和P(S5)P(S6)
查看答案
单选题

中级软件设计师,章节练习,中级软件设计师系统开发运行知识

  • A.243ms
  • B.246ms
  • C.254ms
  • D.280ms
查看答案

相关题库更多 +