最长公共子序列
来源:互联网 发布:ubuntu llmp 编辑:程序博客网 时间:2024/06/06 10:03
F: P1050
时间限制: 1 Sec 内存限制: 128 MB
题目描述
一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串。如A=“cdaad" ,顺次选1,3,5个字符就构成子串" cad" ,现给定两个字符串,求它们的最长共公子串。
输入
第一行两个字符串用空格分开。
输出
最长子串的长度。
样例输入
abccd aecd
样例输出
3
提示
两个串的长度均小于2000
Solution
求LCS
思路可以参考《算法导论》Page222-226;
方程:f[i][j]=f[i-1][j-1]+1 (if a[i]==b[j])
F[i][j]=max{f[i-1][j],f[i][j-1]}+1 (if a[i]!=b[j])
CODE
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxlen=2100;char a[maxlen],b[maxlen];char ch;int len_a,len_b;int f[maxlen][maxlen];int main(){ch=getchar();while (ch!=' '){a[++len_a]=ch;ch=getchar();}ch=getchar();while (ch!=EOF){b[++len_b]=ch;ch=getchar();}for (int i=1;i<=len_a;i++)for (int j=1;j<=len_b;j++)if (a[i]==b[j]) f[i][j]=f[i-1][j-1]+1;else f[i][j]=max(f[i-1][j],f[i][j-1]);cout<<f[len_a][len_b];return 0;}
阅读全文
0 0
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列...
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 最长公共子序列
- 【教程】将面板和其他Swing组件绘制到PDF文档
- Apache+Tomcat实现负载均衡及集群(session同步)--一、前言
- 抽象类与接口
- Codeforces 808E Selling Souvenirs【思维+Dp】
- 深入了解MyBatis参数
- 最长公共子序列
- ThinkPHP 3.23 框架执行流程分析
- JAVA数据结构:简单排序(冒泡,选择,插入)
- 在osChina上生成ssh公钥的步骤
- 一致性哈希的浅析
- Nvidia-OpenCL-SDK-Code-Samples的学习[3]
- Linux学习
- UICollectionView
- driver.manage().window().getSize().width 获取屏幕分辨率报错问题