求最长公共子序列的c代码
按照书上的算法写的代码,但是结果总是不对,求大神帮忙看一下#include <stdlib.h>
#include <string.h>
#define OK 1
#define Error 0
#define OVERFLOW -2
#define INFEASIBLE -1
#define TURE 1
#define FALSE 0
typedef int Status;
typedef int SElemtype;
#define ATACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OPTR 10
#define OPND 10
Status lcs(char A[],char B[]);
#endif // LCS_H_INCLUDED
Status lcs(char A[],char B[])
{
int i,j,L[20][20],m,n;
n=strlen(A);
m=strlen(B);
for(i=0;i<n;i++)
L[i][0]=0;
for(j=0;j<m;j++)
L[0][j]=0;
for(i=1;i<=n;i++)
{
for(j=1;i<=m;j++)
if('A[i]'=='B[j]')
L[i][j]=L[i-1][j-1]+1;
else
{
if(L[i][j-1]>L[i-1][j])
L[i][j]=L[i][j-1];
else L[i][j]=L[i-1][j];
}
}
return L[n][m];
}
#include <iostream>
#include"LCS.h"
#include <string.h>
using namespace std;
int main()
{
char A[20],B[20];
int i,n,m,MAX;
printf("请输入一个字符串A:");
gets(A);
printf("请输入一个字符串B:");
gets(B);
MAX=lcs(A,B);
printf("最长公共子序列的长度为:%d",lcs(A,B));
}