LCS算法(动态规划实现最长公共子序列)c语言实现
来源:互联网 发布:南华大学网络教学平台 编辑:程序博客网 时间:2024/04/30 10:24
#include <stdio.h>
#include <string.h>
int b[50][50];
int c[50][50];
int length=0;
void lcs(char* x,int m,char* y,int n)
{
int i;
int j;
for (i=1;i<=m;i++) c[i][0] = 0;
for (i=1;i<=n;i++) c[0][i] = 0;
c[0][0] = 0;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
{
if (x[i-1] == y[j-1])
{
c[i][j] = c[i-1][j-1] + 1;
b[i][j] = 1;
}
else
if (c[i-1][j] > c[i][j-1])
{
c[i][j] = c[i-1][j];
b[i][j] = 2;
}
else
{
c[i][j] = c[i][j-1];
b[i][j] = 3;
}
}
}
void show(int i,int j,char* x)
{
if (i==0||j==0)
return ;
if (b[i][j]==1)
{
show(i-1,j-1,x);
length++;
printf("%c",x[i-1]);
}
else if (b[i][j]==2)
show(i-1,j,x);
else
show(i,j-1,x);
}
int main()
{
char* x="xyxzyxyzzy";
char* y="xzyzxyzxyzxy";
int m = strlen(x);
int n = strlen(y);
lcs(x,m,y,n);
printf("The string is:");
show(m,n,x);
printf("/nthe length :%d/n",length);
getchar();
}
- LCS算法(动态规划实现最长公共子序列)c语言实现
- 动态规划实现最长公共子序列(LCS)算法
- LCS问题(最长公共子序列)-动态规划实现
- Java-LCS最长公共子序列(动态规划实现)
- 最长公共子序列(LCS) (动态规划算法实现)算法导论p211
- Java实现算法导论中最长公共子序列(LCS)动态规划法
- 《算法导论》动态规划—最长公共子序列(不连续)--c语言实现
- 算法导论-----最长公共子序列LCS(动态规划)
- 算法学习心得——动态规划法实现最长公共子序列(LCS)
- 面试(动态规划算法之:最长公共子序列 & 最长公共子串(LCS))
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 动态规划算法之:最长公共子序列 & 最长公共子串(LCS)
- 基于动态规划的最长公共子序列实现(LCS)
- 动态规划算法解最长公共子序列LCS问题
- 动态规划算法解最长公共子序列LCS问题
- 动态规划算法解最长公共子序列LCS问题
- 带宽限制下的视觉实体属性传播(转)
- 入门 HelloWorld!
- 理想的编程语言
- 如何更改所有文件夹的图标排列方式和查看方式
- Delphi的"Invalid pointer operation"异常的解决办法
- LCS算法(动态规划实现最长公共子序列)c语言实现
- xml与xsl-fo生成PDF
- 网站资源很多,可是一般不让人用
- 随机数函数 rand () srand() (笔记)
- java policy 策略
- Quartz在Spring中动态设置cronExpression研究(spring设置动态定时任务)【转】
- 提高squid缓存的命中率
- 查询初始化参数的方法
- Spring结合Quartz实现多任务定时调用