uva 10405 Longest Common Subsequence 最长公共子序列 LCS
来源:互联网 发布:易语言源码下载 编辑:程序博客网 时间:2024/05/27 20:10
两个月没看还真忘了,- -b
动态规划的一个计算两个序列的最长公共子序列的方法如下:
以两个序列 X、Y 为例子: 设有二维数组 f[i,j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度,则有: f[1][1] = same(1,1); f[i,j] = max{f[i-1][j -1] + same(i,j),f[i-1,j],f[i,j-1]} 其中,same(a,b)当 X 的第 a 位与 Y 的第 b 位完全相同时为“1”,否则为“0”。 此时,f[j]中最大的数便是 X 和 Y 的最长公共子序列的长度,依据该数组回溯,便可找出最长公共子序列。 该算法的空间、时间复杂度均为O(n^2),经过优化后,空间复杂度可为O(n)。#include<stdio.h>#include<string.h>int dp[1000][1000];int max(int a,int b){ if(a>b) return a; else return b;}int main(){ int i,j,k,la,lb,m,n; char a[1001],b[1001]; while(gets(a)!=NULL&&gets(b)!=NULL) { memset(dp,0,sizeof(dp)); la=strlen(a); lb=strlen(b); for(i=1;i<=la;i++) for(j=1;j<=lb;j++) { if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=max(dp[i][j-1],dp[i-1][j]); } printf("%d\n",dp[la][lb]); }return 0;}
- uva 10405 Longest Common Subsequence 最长公共子序列 LCS
- UVa 10405 - Longest Common Subsequence 最长公共子序列模板
- uva 10405 - Longest Common Subsequence(最长公共子序列)
- UVA 10405 LONGEST COMMON SUBSEQUENCE(最长公共子序列)
- UVA 10405 Longest Common Subsequence(最长公共子序列)
- uva 10405 Longest Common Subsequence (最长公共子序列)
- uva 10405 Longest Common Subsequence(最长公共子序列)
- 最长公共子序列(Longest Common Subsequence LCS)
- 最长公共子序列(LCS, Longest Common Subsequence), POJ 1458
- 求最长公共子序列Longest Common Subsequence LCS
- 最长公共子序列(Longest-Common-Subsequence,LCS)
- 最长公共子序列问题LCS Longest Common Subsequence
- uva10405 - Longest Common Subsequence(LCS,最长公共子序列)
- 最长公共子序列(Longest Common Subsequence, LCS)
- 最长公共子序列(Longest Common Subsequence,LCS)
- 最长公共子序列,Longest-Common-Subsequence(LCS)
- 最长公共子序列LCS(The longest common subsequence)
- 最长公共子序列问题(LCS) Longest common subsequence
- 传智博客JAVA基础第二十七天
- 线程局部存储
- js网页常用代码
- Godaddy教程:支付宝/信用卡续费域名(图文)
- php——数据库连接的伪单例模式代码
- uva 10405 Longest Common Subsequence 最长公共子序列 LCS
- 传智博客JAVA基础第二十八天
- 《应用密码学》求给定n阶LFSR在指定q元域上的理想初始向量集合C
- Java字符串_日期_数字格式化输出
- Linux 静态库与共享库
- VmWare虚拟机增加硬盘容量的方法
- [IT 男人帮 -- 10/23] iPad Mini发布前配置价格全预测(准确度99%)
- 传智博客JAVA基础第二十九天
- HTTPS的七个神话(译文)