求两个字符串的最大公共子字符串(动态规划)

#include <stdio.h>

#include <string.h>

int main()

{

char a[100],b[100];

gets(a);

gets(b);

int alen=strlen(a);

int blen=strlen(b);

int arr[alen][blen]={0};



int index=0;

int max=0;

for(int i=0;i<alen;i++)

{

for(int j=0;j<blen;j++)

{

char c1=a[i];

char c2=b[j];



if(c1==c2)

{

if( i==0 || j==0)

{

arr[i][j]=1;

}else{

arr[i][j]=arr[i-1][j-1]+1;

}



if(arr[i][j]>max)

{

max=arr[i][j];

index=i;

} 

}

}

}

for(int i=(index+1-max);i<index+1;i++)

{

printf("%c",a[i]);

}

return 0;

}
发布了27 篇原创文章 · 获赞 8 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Ru_yin_hai/article/details/79658661