[算法导论读书笔记]最长公共子串
来源:互联网 发布:设备优化改善报告ppt 编辑:程序博客网 时间:2024/06/05 14:50
代码示例:
#include <stdio.h>#include <string.h>#define MAX 50char up = 'u', left = 'l', topLeftConer = 'c';void PrintLcs( char b[][MAX], char *x, int i, int j){if( i == 0 || j == 0)return;if( b[i][j] == topLeftConer ){PrintLcs( b, x, i-1, j-1);printf("%c", x[i -1]);}else if( b[i][j] == up ){PrintLcs( b, x, i - 1, j);}else{PrintLcs( b, x, i, j - 1);}}int LcsLength( char *x, char *y){int m = strlen(x);int n = strlen(y);int c[MAX][MAX];char b[MAX][MAX];int i, j;memset(c, 0, sizeof(c[0][0]) * (MAX * MAX) );memset(b, 0, sizeof(b[0][0]) * (MAX * MAX) );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] = topLeftConer;}else if( c[i-1][j] >= c[i][j-1]){c[i][j] = c[i-1][j];b[i][j] = up;}else{c[i][j] = c[i][j-1];b[i][j] = left;}}}printf("the common substr is :");PrintLcs( b, x, m, n);return c[m][n];}int main(int argc, char* argv[]){char x[] = "asdbcesd";char y[] = "baseedd";puts(x);puts(y);printf("\nmax len: %d\n", LcsLength( x, y));return 0;}
- [算法导论读书笔记]最长公共子串
- 算法导论—最长公共子串
- 算法导论 ch15 动态规划 最长公共子串
- 算法导论 最长公共子序列
- 算法导论15.4 最长公共子序列
- 算法导论之最长公共子序列
- 最长公共子序列--【算法导论】
- 算法导论(LCS最长公共子序列)
- 算法导论—最长公共子序列
- 算法导论—最长公共子序列
- 算法导论最长公共子序列
- 算法导论 15.4 最长公共子序列
- 最长公共子串[算法]
- LongestCommonSequence 最长连续公共子序列(算法导论是最长公共子序列)
- 算法导论 ch15 动态规划 最长公共子序列
- 【算法导论】动态规划之最长公共子序列
- 算法导论之动态规划:最长公共子序列
- 动态规划之最长公共子序列(算法导论)
- 最新行政区划编码数据
- vc++多线程编程的十个例子
- Linux下软件安装初探
- 用 Lisp 语言计算一个集合的所有子集构成的新集合
- 让CentOS 5.3支持ntfs分区
- [算法导论读书笔记]最长公共子串
- CASE语句与CASE表达式
- cscope 使用
- 深入理解指针函数
- 开发步骤经验谈
- 设计模式——合成模式(Composite)
- 习语言解数学题之一
- 42个激发灵感、漂亮的登陆页面设计
- Libiptc库(一)