算法设计分析中求最长公共子序列(C语言)
2009-11-04 22:53
337 查看
#include <stdio.h> #define N 7 #define M 7 int max(int x, int y); void LCS(int L[N + 1][M + 1], char *strA, char *strB); void disp(int a[N + 1][M + 1]); int main() { char strA[] = "xzyzzyx"; char strB[] = "zxyyzxz"; int L[N + 1][M + 1]; LCS(L, strA, strB); disp(L); return 0; } int max(int x, int y){ return x >= y ? x : y; } void LCS(int L[N + 1][M + 1], char *strA, char *strB) { int i, j; for(j = 0; j <= M; j++) L[0][j] = 0; for(i = 0; i <= N; i++) L[i][0] = 0; for(i = 1; i <= N; i++) for(j = 1; j <= M; j++) { if(strA[i - 1] == strB[j - 1]) { L[i][j] = L[i - 1][j - 1] + 1; } else { L[i][j] = max(L[i - 1][j], L[i][j - 1]); } } } void disp(int a[N + 1][M + 1]) { int i, j; printf(" "); for(j = 0; j <= M; j++) printf("%d ", j); printf("\n"); for(i = 0; i <= N; i++) { printf("%d ", i); for(j = 0; j <= M; j++) { printf("%d ", a[i][j]); } printf("\n"); } }
相关文章推荐
- 算法设计分析之三(动态规划,最长公共子序列)
- 【算法设计与分析】5、最长公共子序列
- 算法分析与设计实验 动态规划法 求最长公共子序列
- 实验一 词法分析程序的设计与实现(C语言)
- 【算法分析与设计】【第九周】91. Decode Ways
- 算法分析与设计week10--349. Intersection of Two Arrays
- 【算法基础】由插入排序来看如何分析和设计算法
- (算法设计技巧与分析)BinarySearch
- (算法设计技巧与分析)SelectionSortFec
- (算法设计技巧与分析)Knapsack
- 算法分析与设计课程作业第五周#1
- 【算法设计与分析】5个数7次比较排序的算法
- 算法分析与设计第六周:236. Lowest Common Ancestor of a Binary Tree
- 【算法设计与分析】最大子段和问题
- 算法分析与设计——LeetCode Problem.547 Friend Circles
- [C语言] 数据结构-算法效率的度量方法-事前分析估算方法
- 算法设计与分析学习-分治法1
- 算法分析与设计-减治法3:生成子集的减治算法及二进制法
- 算法分析与设计课程——LeetCode刷题之Remove Duplicates from Sorted Array
- 【算法分析与设计】【第十八周】684. Redundant Connection