下列算法实现求采用顺序结构存储的串s和串t的一个最长公共子串。 void maxcomstr(string*S,*t;int index.length) } int i,j,k,lengthl.con; index=0;length

admin2014-01-13  26

问题 下列算法实现求采用顺序结构存储的串s和串t的一个最长公共子串。
  void maxcomstr(string*S,*t;int index.length)
  }
    int i,j,k,lengthl.con;
    index=0;length=0;i=1;
    while(i<=slrlen(s))
   
    j=1;
    while(j<=strlen(t))
   
    if(sEi7==t[j])
   
    k =1;lengthl =1:con=1:
    while(con)
    if((1))
    lengthl=lengthl+1;k=k+1;
   
    else
    (2):
    if(1engthl>length)
    index=i;lcngtll一lcngthl;}
    (3);
    }
    else(4):
    }
    (5):
    }

选项

答案(1)i+k<=s.1en&8。j+k<=t.1en&&s[i+k]==t[j+k]//圣n果在s和t的长度内对应字符相等,则指针k后移(加1) (2)con=0j/s和t对应字符不相等时,置标记后退出 (3)j+=k//在t串中,从第j+k字符起与s[i]比较 (4)j++j/t串取下一字符 (5)i++//s串指针i后移(加1) 本题程序求采用顺序存储结构存储的书s和串t的最大公共子串。串s用i指针(1≤i≤s.1en),串t用j指针(1≤j≤t.1en)。算法思想是对每个i(1≤i≤s.1en,即程序中第一个whik循环),求从i开始的连续字符串与从j(1≤j≤t.1en,即程序中第二个while循环)开始的连续字符串的最大匹配。程序中第三个(即最内层)while循环是当s中某字符(s[j])与t中某字符(t[j])相等时,求出局部公共子串。若该子串长度大于已求出的最长公共子串(初始为O),则要修改最长公共子串的长度。

解析
转载请注明原文地址:https://jikaoti.com/ti/n7U3FFFM
0

最新回复(0)