求最长公共子序列

来源:互联网 发布:淘宝买家达到钻号 编辑:程序博客网 时间:2024/05/20 00:13
#include<stdio.h>
#include<string.h>
int LCS(int m,int n);//函数的申明
char a[20];//定义两个数组名为a,b的一维数组,数组大小为20
char b[20];
int main()
{
  int lena,lenb;
  strcpy(a,"cnblde");//从键盘输入一串字符串,分别存入a,b两数组中,此方法较为简便,快捷
  strcpy(b,"belon");    
  lena=strlen(a);//分别记录a,b数组中元素个数
  lenb=strlen(b);
  printf("LCS: %d\n",LCS(lena-1,lenb-1));//函数调用,并打印输出
  return 0;
}
//递归算法的实现
int LCS(int m,int n)
{
  if(m==-1||n==-1)
  return 0;
  else if(a[m]==b[n])

  {

  printf("%c",a[m-1]);

  return LCS(m-1,n-1)+1;
  }
  else
  return LCS(m-1,n)>LCS(m,n-1)? LCS(m-1,n) : LCS(m,n-1);
  return 0;
}
原创粉丝点击