HDU1159 && POJ1458 Common Subsequence (LCS)
2017-02-07 12:19
423 查看
Common Subsequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 36610 Accepted Submission(s): 16755
Problem Description
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = <x1, x2, ..., xm> another sequence Z = <z1, z2, ..., zk> is a subsequence of X if there exists a strictly increasing sequence <i1, i2,
..., ik> of indices of X such that for all j = 1,2,...,k, xij = zj. For example, Z = <a, b, f, c> is a subsequence of X = <a, b, c, f, b, c> with index sequence <1, 2, 4, 6>. Given two sequences X and Y the problem is to find the length of the maximum-length
common subsequence of X and Y.
The program input is from a text file. Each data set in the file contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct. For each set of data the program prints on the standard
output the length of the maximum-length common subsequence from the beginning of a separate line.
Sample Input
abcfbc abfcab
programming contest
abcd mnp
Sample Output
4
2
0
Source
Southeastern Europe 2003
一道最长公共子序列模板题
最长公共子序列问题讲解:http://blog.csdn.net/i1020/article/details/54918665
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string.h> #include <algorithm> using namespace std; int dp[1005][1005]; int main(){ char str1[1005],str2[1005]; while(~scanf("%s%s",str1,str2)){ int len1 = strlen(str1),len2 = strlen(str2); memset(dp,0,sizeof(dp)); for(int i = 1; i <= len1; i ++) for(int j = 1; j <= len2; j ++) if(str1[i - 1] == str2[j - 1]) dp[i][j] = dp[i-1][j-1] + 1; else dp[i][j] = max(dp[i-1][j],dp[i][j-1]); printf("%d\n",dp[len1][len2]); } return 0; }
相关文章推荐
- 改变UIAlertController的标题、内容的字体和颜色
- RabbitMQ Exchange Queue RoutingKey BindingKey解析
- Kettle 中生成随机数 或者GUID唯一标识符
- iOS中setValue和setObject的区别详解
- UI分辨率
- iOS UIBezierPath类 介绍
- [置顶] onTouch返回true和false的区别,如何解决onTouch和onClick冲突
- UITableView的折叠收缩和QQ好友分组效果
- 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)
- vuejs23简单组件使用
- UE3 性能分析及优化
- 老生常谈之UITableView的性能优化
- UE3 性能、分析及优化
- vuejs-Vue.filter自定义
- vuejs20-过滤器uppercase
- vuejs19-v-if-v-else
- SoapUI使用测试Rest
- 2-1 UITableView
- 学习u3d笔记(一) OnGui实现动态创建cube组件 并按钮控制cube旋转 停止 销毁
- 学习Vue.js过程中的知识补充