最长公共字序列.cpp
<span style="color:#993399;">/*
By yuan
2014/6/21
At nwpu.xf 1041.最长公共子序列
时限:1000ms 内存限制:200000K 总时限:3000ms
描写叙述
一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=<x1, x2,…, xm>,则还有一序列Z=<z1, z2,…, zk>是X的子序列是指存在一个严格递增的下标序列 <i1, i2,…, ik>。使得对于全部j=1,2,…,k有: Xij = Zj 假设一个序列S即是A的子序列又是B的子序列,则称S是A、B的公共子序列。
求A、B全部公共子序列中最长的序列的长度。 输入
输入共两行,每行一个由字母和数字组成的字符串,代表序列A、B。A、B的长度不超过200个字符。 输出
一个整数。表示最长各个子序列的长度。
格式:printf("%d\n"); 输入例子
programming
contest 输出例子
2 提示 来源
*/
#include<iostream>
#include<stdio.h> #include<stdlib.h>
#include<string.h>
using namespace std;
char a[201],b[201];
int sum[201][201];
int la,lb;
void slove()
{int i,j;
for(i=1;i<=la;i++)
for(j=1;j<=lb;j++)
{
if(a[i]==b[j])
sum[i][j]=sum[i-1][j-1]+1;
else if(sum[i-1][j]>=sum[i][j-1])
sum[i][j]=sum[i-1][j];
else
sum[i][j]=sum[i][j-1];
}
} int main()
{int i,j;
memset(a,'0',201);
memset(b,'0',201);
memset(sum,0,201*201);
for(i=1;;i++){
scanf("%c",&a[i]);
if(a[i]=='\n') break;}
la=i-1;
for(j=1;;j++){
scanf("%c",&b[j]);
if(b[j]=='\n') break;}
lb=j-1;
slove();
cout<<sum[la][lb]<<endl;
return 0;
}</span>
最长公共字序列.cpp的更多相关文章
- hdu 1243 反恐训练营 最长公共字序列
此题的题意很明确,就是求最长公共子序列: #include<iostream> #include<algorithm> #include<cstdio> #incl ...
- URAL 1517 Freedom of Choice(后缀数组,最长公共字串)
题目 输出最长公共字串 #define maxn 200010 int wa[maxn],wb[maxn],wv[maxn],ws[maxn]; int cmp(int *r,int a,int b, ...
- (字符串)最长公共字串(Longest-Common-SubString,LCS)
题目: 给定两个字符串X,Y,求二者最长的公共子串,例如X=[aaaba],Y=[abaa].二者的最长公共子串为[aba],长度为3. 子序列是不要求连续的,字串必须是连续的. 思路与代码: 1.简 ...
- HDU 5904 LCIS (最长公共上升序列)
传送门 Description Alex has two sequences a1,a2,...,an and b1,b2,...,bm. He wants find a longest common ...
- 最长公共子序列与最长公共字串 (dp)转载http://blog.csdn.net/u012102306/article/details/53184446
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- poj 3080 kmp求解多个字符串的最长公共字串,(数据小,有点小暴力 16ms)
Blue Jeans Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14113 Accepted: 6260 Descr ...
- java_基础知识_字符串练习题_计算两个字符串的最长公共字串长度
package tek; Java算法——求出两个字符串的最长公共字符串 /** * @Title: 问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串. * @author 匹夫( ...
- HDU 1423 最长公共字串+上升子序列
http://acm.hdu.edu.cn/showproblem.php?pid=1423 在前一道题的基础上多了一次筛选 要选出一个最长的递增数列 lower_bound()函数很好用,二分搜索找 ...
- 最长公共字串(LCS)最长连续公共字串(LCCS)
链接1:http://blog.csdn.net/x_xiaoge/article/details/7376220 链接2:http://blog.csdn.net/x_xiaoge/article/ ...
随机推荐
- OkHttpUtil
package jp.co.gunmabank.util import android.os.Handlerimport android.os.Looperimport com.google.gson ...
- iOS开发工具篇-AppStore统计工具
苹果官方的iTunes Connect提供的销售数据统计功能比较弱,例如只能保存最近30天的详细销售数据,界面丑陋, 无法查看App的排名历史变化情况等. 早有一些公司提供了专门的解决方案或工具.这些 ...
- mysql的row_number()实现
在mysql中没有row_number()方法,这里模拟row_number()实现: 如有表 studentid name age class1 张1 15 12 张2 15 ...
- 雅礼培训 Problem B 【图论 + 贪心】
题意 A和B在树上轮流选点,记A的联通块个数为\(x\),B的联通块个数为\(y\) A使\(x - y\)最大,B使\(x - y\) 二人采取最优策略,求\(x-y\) 题解 树联通块个数 = 点 ...
- 常州模拟赛d4t1 立方体
题目描述 立方体有 6 个面,每个面上有一只奶牛,每只奶牛都有一些干草.为了训练奶牛的合作精神,它 们在玩一个游戏,每轮:所有奶牛将自己的干草分成 4 等份,分给相邻的 4 个面上的奶牛. 游戏开始, ...
- 【DFS求树的最大二分匹配+输入外挂】HDU 6178 Monkeys
http://acm.hdu.edu.cn/showproblem.php?pid=6178 [题意] 给定一棵有n个结点的树,现在有k个猴子分布在k个结点上,我们可以删去树上的一些边,使得k个猴子每 ...
- hdu 2859
#include<stdio.h> char s[1010][1010]; int map[1010][1010]; int main() { int n,i,j,k,ii,jj; w ...
- mongodb的入门学习
mongodb的入门学习 简介: MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...
- MySQL的LOOP, LEAVE 和ITERATE语句(类似Continue、Break的写法)
和REPEAT和while语句不同,LOOP.LEAVE.ITERATE更像其他编程语言中的goto语句. LOOP要设定一个label指定循环的开始位置,而LEAVE则像其他语言中的Break会离开 ...
- eclispe集成web插件
最近公司需要使用开源框架开发,所有下载了最新版本的eclispe工具,但是在官网下载的eclispe是不包含web插件的,无法创建web项目,需要自行集成web插件 eclipse官网下载地址:htt ...