LCS(x,y)表示字符串x,y最长公共子序列长度,则LCS(“program”, “algorithm”)=3
初次尝试,有错请留言,O(∩_∩)O谢谢
#include <stdio.h>
int LCS(char *a,int la,char *b,int lb)
{
if(la==-1&&lb==-1) return 0;
for(char* ptr=a-la;ptr<=a;ptr++)
printf("%c",*ptr);
printf("\t");
for(char* ptr=b-lb;ptr<=b;ptr++)
printf("%c",*ptr);
printf("\n");
if(*a==*b) return LCS(a-1,la-1,b-1,lb-1)+1;
int t1=LCS(a-1,la-1,b,lb);
int t2=LCS(a,la,b-1,lb-1);
return max(t1,t2);
}
int main()
{
char a[]="program",b[]="algorithm";
char *aa,*bb;
int la=sizeof(a)/sizeof(char)-2;
int lb=sizeof(b)/sizeof(char)-2;
aa=&a[la];
bb=&b[lb];
// printf("%d",la);
printf("LCS(%s,%s)=%d\n",a,b,LCS(aa,la,bb,lb));
return 0;
}