hud1151 动态规划 最大的公共子序列
2014-11-06 21:10
155 查看
就是求最大公共子序列,很经典的一题,这题就当复习算法啦
递推公式:
c[i][j]=c[i-1][j-1]+1 当a[i-1]==b[j-1]时
c[i][j]=c[i-1][j]>c[i][j-1]?c[i-1][j]:c[i][j-1] 当a[i-1]!=a[j-1]时
递推公式:
c[i][j]=c[i-1][j-1]+1 当a[i-1]==b[j-1]时
c[i][j]=c[i-1][j]>c[i][j-1]?c[i-1][j]:c[i][j-1] 当a[i-1]!=a[j-1]时
#include<stdio.h> #include<cstring> int c[500][500]; char a[500],b[500]; int LCS(int m,int n) { int i,j; for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++){ if(a[i-1]==b[j-1]) { c[i][j]=c[i-1][j-1]+1; } else{ c[i][j]=c[i-1][j]>c[i][j-1]?c[i-1][j]:c[i][j-1]; } } } return c[m] ; } int main() { int i,j,m,n; while(scanf("%s %s",a,b)!=EOF) { memset(c,0,sizeof(c)); i=strlen(a); j=strlen(b); printf("%d\n",LCS(i,j)); } return 0; }
相关文章推荐
- 最大公共子序列--动态规划
- 动态规划——最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串最小编辑距离日记整理
- 最大公共子序列,最大子段和(动态规划)
- java 动态规划最大公共子序列问题
- 最大子序列、最长连续公共子串(连续)、最长公共子序列(动态规划)
- 最大连续子序列和-动态规划
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 动态规划之最长公共子序列和最长公共字串,最大子序列和
- 动态规划_最大公共子序列长度问题
- 动态规划练习一 04:公共子序列
- 动态规划例题 最大上升自序列
- 算法题2 动态规划之最大子序列和&最大子矩阵和
- 动态规划 - 最大连续子序列
- hdu 1231最大连续子序列 (动态规划)
- (5)最大m段子序列和问题____动态规划
- 经典字符串算法 “最长上升子序列,最大连续子序列和,最长公共子串”
- HDU - 1231 最大连续子序列(动态规划)
- 求所有最大公共子序列的算法实现
- hdu 1159,最大公共子序列 LCS