谁能为我解释一下这个程序?
#include<stdio.h>#include<stdlib.h>
#include<string.h>
#define N 100
char sa[N],sb[N],temp[N];
int max(int a,int b)
{
if(a>b)return a;
else return b;
}
int f(int i,int j)
{
if(i<0||j<0)return 0;
else if(sa[i]-sb[j]==0)
{
return f(i-1,j-1)+1;
}
else return max(f(i-1,j),f(i,j-1));
}
int main()
{
int i,j,tj,r,v;
scanf("%s%s",&sa,&sb);
i=strlen(sa);
j=strlen(sb);
v=f(i-1,j-1);//v就是所求的最大公共字符串的个数,用f函数来实现
printf("%d\n",v);
for(i=0,r=0,tj=0;i<strlen(sa)&&r<v;i++)
{
for(j=tj;j<strlen(sb);j++)
f(sa[i]==sb[j])
{
temp[r++]=sa[i];
break;
}
else;
if(j==strlen(sb));
else tj=j;
}
for(i=0;i<v;i++)printf("%c",temp[i]);
printf("\n");
return 0;
}