#include<stdio.h>
#include<stdlib.h>
int max(int a,int b)
{
if(a>=b)
return a;
else
return b;
}
int f(int *s1,int *s2)//返回s1,s2最大公共序列长度
{
if(*s1==-1||*s2==-1)//判断是否结束
return 0;
if(*s1==*s2)
return f(s1+1,s2+1)+1;
else
return max(f(s1+1,s2),f(s1,s2+1));
}
int main()
{
int a[6]={1,3,4,5,7,-1};
int b[7]={2,3,5,3,5,7,-1};
printf("%d\n",f(a,b));//a,b以-1标志结尾
}
#include<stdlib.h>
int max(int a,int b)
{
if(a>=b)
return a;
else
return b;
}
int f(int *s1,int *s2)//返回s1,s2最大公共序列长度
{
if(*s1==-1||*s2==-1)//判断是否结束
return 0;
if(*s1==*s2)
return f(s1+1,s2+1)+1;
else
return max(f(s1+1,s2),f(s1,s2+1));
}
int main()
{
int a[6]={1,3,4,5,7,-1};
int b[7]={2,3,5,3,5,7,-1};
printf("%d\n",f(a,b));//a,b以-1标志结尾
}