永发信息网

数据结构课程设计,以顺序存储结构表示串,求两个字符串中的最长公共子串。帮忙看下,我运行不出来

答案:1  悬赏:0  手机版
解决时间 2021-11-07 15:27
数据结构课程设计,以顺序存储结构表示串,求两个字符串中的最长公共子串。帮忙看下,我运行不出来
最佳答案
百度提交了好几次 怎么就提交不上呢 
我改了下你的代码,你写的太冗余了,其实你第一个for循环的时候 记录下本次循环匹配的第一个项和最大匹配长度,如果本次的长度大于以前的长度,则更新,运行如下图:

代码如下:
#include 

#include
#include 
#define MaxStrSize 256
typedef struct {
 char ch [MaxStrSize];
 int length;
}SeqString;
 
 

void search(SeqString T,SeqString P )
{
 int i,j,k,a;
 int b=1;
 int m =P.length;
 int n = T.length; 
 int index = 0;//第一个匹配项
 int maxlen = 0;//最大的匹配长度
 int flag = 0;//未找到
 for (i=0;i<=n;i++)
 {
  k=i; 
  for (j=0;j<=m;j++)
  {
   a = 0;
   flag = 0;
   while(j   {
    k++;j++;a++;
    flag = 1;
   }
   if(flag ==1)
   {
    if(a>maxlen)
    {
     maxlen = a;
     index = j-a;//匹配的首项 
    }
   } 
  }
 
 }
 
 printf("匹配最大长度为:%d,匹配结果为:",maxlen);
 for(;maxlen>0;maxlen--)
 {
  printf("%c",P.ch[index++]);
 } 

 printf("
");

}
void main ()

 
 SeqString T1,P1;
 printf("输入第一个字符串 :");
 gets(T1.ch); 
 printf("输入第二个字符串 :");
 gets (P1.ch);
 T1.length=strlen (T1.ch);
 P1.length=strlen (P1.ch);

 printf("第一个串为:%s,长度:%d
",T1.ch,T1.length);

 printf("第二个串为:%s,长度:%d
",P1.ch,P1.length);

 search(T1,P1); 
}

来自:求助得到的回答
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
龙凤麒缘是什么意思?
无锡灵山寺庙可不可以挂单居士
宝应高速路口和氾水服务区有多远
语文什么叫动词什么叫行容词
幻界王最后一集萧依依脸上的表情是什么意思
宅院有坟怎么办
著名的唐代画家有哪些?
义乌江东汽车站到火车站有多远
g.u.y mv什么意思
OppoA83如何强制解锁?
为什么江浙沪的快递那么快?重庆就要慢1-2天
you and i什么(be)0f the same age
华为手机上面是否都有华为标志
二战时,日军的“军”等同中国或者西方的什么
帮帮忙 陕西话 毛你个板板什么意思
推荐资讯
朋友小聚喝什么白酒,求推荐
冰露到底是什么意思
燃气烧烤炉一面火大一面火小怎么解决
例,狐理馋的直流口水,他笑的什么.
为保障黑枸杞质量需要与什么鉴别
挑选狗窝的要注意什么
7元红塔山经典1956(白盒软包)真假问题
龙沙区齐齐哈尔青云小学地址在哪,我要去那里
你好:买一台打标机去摆摊卖手机壳,吊坠,小
求推荐18w左右落地的车
中国人保代办交管业务大柳塔便民服务点地址在
我现在压力好大,想死心都有了,就是没办法死
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?