CSU 1060 Nearest Sequence
题意:求三个序列的最长公共子序列。
思路:一开始以为只要求出前两个的LCS,然后和第三个再求一遍LCS就是答案了。但是样例就对我进行啪啪啪打脸了。实际上就跟两个序列的差不多,换成三维的就行了。
代码:需要注意的是max速度比较慢,最后改成if
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
const int N=;
int dp[N][N][N];
char a[N],b[N],c[N];
void LCS()
{
int la=strlen(a),lb=strlen(b),lc=strlen(c),i,j,k;
memset(dp,,sizeof(dp));
for(i=;i<=la;i++)
{
for(j=;j<=lb;j++)
{
for(k=;k<=lc;k++)
{
if(a[i-]==b[j-]&&a[i-]==c[k-])
dp[i][j][k]=dp[i-][j-][k-]+;
else
{
if(dp[i-][j][k]>dp[i][j][k]) dp[i][j][k]=dp[i-][j][k];
if(dp[i-][j-][k]>dp[i][j][k]) dp[i][j][k]=dp[i-][j-][k];
if(dp[i-][j][k-]>dp[i][j][k]) dp[i][j][k]=dp[i-][j][k-];
if(dp[i][j-][k]>dp[i][j][k]) dp[i][j][k]=dp[i][j-][k];
if(dp[i][j-][k-]>dp[i][j][k]) dp[i][j][k]=dp[i][j-][k-];
if(dp[i][j][k-]>dp[i][j][k]) dp[i][j][k]=dp[i][j][k-];
}
}
}
}
}
int main()
{
while(scanf("%s%s%s",a,b,c)!=EOF)
{
LCS();
printf("%d\n",dp[strlen(a)][strlen(b)][strlen(c)]);
}
return ;
}
CSU 1060 Nearest Sequence的更多相关文章
- STL or 线段树 --- CSU 1555: Inversion Sequence
Inversion Sequence Problem's Link: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1555 Mean: 给你一 ...
- CSU 2005: Nearest Maintenance Point(Dijkstra + bitset)
Description A county consists of n cities (labeled 1, 2, …, n) connected by some bidirectional roads ...
- CSU 2005 Nearest Maintenance Point(最短路+bitset)
https://vjudge.net/problem/CSU-2005 题意:给出带权值的图,图上有一些特殊点,现在给出q个询问,对于每个询问,输出离该点最近的特殊点,如果有多个,则按升序输出. 思路 ...
- scau 2015寒假训练
并不是很正规的.每个人自愿参与自愿退出,马哥找题(马哥超nice么么哒). 放假第一周与放假结束前一周 2015-01-26 http://acm.hust.edu.cn/vjudge/contest ...
- Inversion Sequence(csu 1555)
Description For sequence i1, i2, i3, … , iN, we set aj to be the number of members in the sequence w ...
- CSU 1515 Sequence (莫队算法)
题意:给n个数,m个询问.每个询问是一个区间,求区间内差的绝对值为1的数对数. 题解:先离散化,然后莫队算法.莫队是离线算法,先按按询问左端点排序,在按右端点排序. ps:第一次写莫队,表示挺简单的, ...
- CSU 1515 Sequence
莫队算法+map #include<cstdio> #include<cstring> #include<cmath> #include<map> #i ...
- CSU 2018年12月月赛 B 2214: Sequence Magic
Description 有一个1到N的自然数序列1,2,3,...,N-1,N. 我们对它进行M次操作,每次操作将其中连续的一段区间 [Ai,Bi][Ai,Bi] (即第Ai个元素到第Bi个元素之间的 ...
- Wow! Such Sequence!(线段树4893)
Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
随机推荐
- mysql启用慢日志查询
查询超时时间:long_query_time 启动慢查日志:log_slow_queries={YES|NO} 启动慢查日志 : slow_query_log ...
- ASP.NET WebAPI 14 仿写Filter管道
WebAPI中有设计了几种管道(Channel),大概如下:HttpMessageHandler,ActionFilter管道,ExceptionFilter管道.在三种管道中HttpMessageH ...
- 以Self Host的方式来寄宿Web API
Common类及实体定义.Web API的定义请参见我的上一篇文章:以Web Host的方式来寄宿Web API. 一.以Self Host寄宿需要新建一个Console控制台项目(SelfHost) ...
- windows临界区
临界区: 临界区是一种轻量级机制,在某一时间内只允许一个线程执行某个给定代码段.通常在多线程修改全局数据时会使用临界区.事件.信号量也用于多线程同步,但临界区与它们不同,并不总是执行向内核模式的切换, ...
- 怎样高效地去判断Array中是否包含某个值?
问题 怎样去判断Array(无序)中是否包含某个值呢? 这是一个在Java中经常被问到的问题.它也是Stack Overflow上投票前几的一个问题.下面将展示投票前几的几个回答,这些回答使用不同的方 ...
- SharePoint 2013 "通知我"功能简介
功能简介 "通知我"主要是在列表或者文档库里面的项目,有添加/删除/修改等操作,发送邮件通知设置的用户的功能:可以针对列表或者文档库设置通知,也可以针对单一项目设置通知功能,是Sh ...
- Python基础(11)--面向对象1
面向对象设计与面向对象编程的关系 面向对象设计(OOD)不会特别要求面向对象编程语言.事实上,OOD 可以由纯结构化语言来实现,比如 C,但如果想要构造具备对象性质和特点的数据类型,就需要在程序上作更 ...
- 利用eclipse抽取 代码片段为方法
选取要被抽取成方法的代码片段,右键->Refactor--->Extract Method 填写方法名称 抽取后成了这个样子:
- linux+jre+apache+mysql+tomcat调优
一.不再为Apache进程淤积.耗尽内存而困扰 0. /etc/my.cnf,在mysqld那一段加上如下一行: log-slow-queries=queries-slow.log 重启MySQL 酌 ...
- jQuery 插件开发文章收集
A jQuery plugin boilerplate http://jonathannicol.com/blog/2012/05/06/a-jquery-plugin-boilerplate/ jQ ...