求最长的公共子序列
#include<stdio.h>#include<math.h>
int fun(char a[])
{
int i;
while(a[i]!='\0')
i++;
return i;
}
main()
{
int n,i,j,k1,k2,t,t3,max[10],t1,t2;
char a[10][20],b[10][10];
printf("请输入你要输入的组数\n");
scanf("%d",&n);
printf("请输入你要输入的数据\n");
for(i=1;i<=n;i++)
{
scanf("%s%s",a[i],b[i]);
}
for(i=1;i<=n;i++) // 数组的循环
{
t3=0;
t1=fun(a[i]);
t2=fun(b[i]);
for(k1=0;k1<t1;k1++) // 字符的循环
{
for(k2=0;k2<t2;k2++) // 字符的循环
{
t=0;
while(1)
{
if(a[i][k1+t]!=a[i][k2+t])
break;
t++; // 判断有多少个相等
if(a[i][k1+t+1]=='\0')
break;
if(a[i][k2+t+1]=='\0')
break;
}
if(t>t3)
t3=t;
}
}
max[i]=t3;
}
for(i=1;i<=n;i++)
printf("%d\n",max[i]);
}
我不知道自己哪里错了。而且我感觉自己的算法是很不行。另外的算法,可以提供,我需要思路。