hdu 4681 最长公共子序列+枚举
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
const int maxn = ;
const int INF = 0x3f3f3f; char a[maxn],b[maxn],c[maxn];
int dp1[maxn][maxn];
int dp2[maxn][maxn]; void Lcs1(char* s1,char* s2,int m,int n){
for(int i=;i<=m;i++)
for(int j=;j<=n;j++){
if(s1[i-] == s2[j-]) dp1[i][j] = dp1[i-][j-] + ;
else if(dp1[i-][j]>dp1[i][j-]) dp1[i][j] = dp1[i-][j];
else dp1[i][j] = dp1[i][j-];
}
}
void Lcs2(char* s1,char* s2,int m,int n){
for(int i=m-;i>=;i--)
for(int j=n-;j>=;j--){
if(s1[i+] == s2[j+]) dp2[i][j] = dp2[i+][j+] + ;
else if(dp2[i+][j]>dp2[i][j+]) dp2[i][j] = dp2[i+][j];
else dp2[i][j] = dp2[i][j+];
}
} int main()
{
//freopen("E:\\acm\\input.txt","r",stdin);
int T;
scanf("%d",&T);
for(int t=;t<=T;t++){
memset(dp1,,sizeof(dp1));
memset(dp2,,sizeof(dp2)); scanf("%s%s%s",a,b,c); int lena = strlen(a), lenb = strlen(b), lenc = strlen(c);
Lcs1(a,b,lena,lenb); Lcs2(a,b,lena,lenb); int ans = lenc;
int left1[maxn],right1[maxn];
int lcnt1=,rcnt1=;
int left2[maxn],right2[maxn];
int lcnt2=,rcnt2=;
for(int i=;i<lena;i++){
if(a[i] == c[]){
int cnt = ;
for(int j=i+;j<lena;j++){
if(a[j] == c[cnt]) cnt++;
if(cnt == lenc){
left1[lcnt1++] = i;
right1[rcnt1++] = j;
break;
}
}
} }
for(int i=;i<lenb;i++){
if(b[i] == c[]){
int cnt = ;
for(int j=i+;j<lenb;j++){
if(b[j] == c[cnt]) cnt++;
if(cnt == lenc){
left2[lcnt2++] = i;
right2[rcnt2++] = j;
break;
}
}
}
}
for(int i=;i<lcnt1;i++)
for(int j=;j<lcnt2;j++){
ans = max(ans,dp1[left1[i]][left2[j]] + lenc + dp2[right1[i]][right2[j]] );
}
printf("Case #%d: %d\n",t,ans); }
}
hdu 4681 最长公共子序列+枚举的更多相关文章
- HDU 1159 最长公共子序列(n*m)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 1159 最长公共子序列
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU - 1503 最长公共子序列记录路径
题意:先给两个水果的名字然后得出一个最短的序列包含这两个词. 思路:我一开始的思路是先求出最长公共子序列,然后做一些处理将其他的部分输出来:两种水果的字符串和最长公共子序列的字符串这三个字符串做对比, ...
- hdu 1503 最长公共子序列
/* 给两个串a,b.输出一个最短的串(含等于a的子序列且含等于b的子序列) */ #include <iostream> #include <cstdio> #include ...
- HDU 4681 string 求最长公共子序列的简单DP+暴力枚举
先预处理,用求最长公共子序列的DP顺着处理一遍,再逆着处理一遍. 再预处理串a和b中包含串c的子序列,当然,为了使这子序列尽可能短,会以c 串的第一个字符开始 ,c 串的最后一个字符结束 将这些起始位 ...
- HDU 4681 String 最长公共子序列
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4681 题意: 给你a,b,c三个串,构造一个d串使得d是a,b的子序列,并且c是d的连续子串.求d最大 ...
- HDU 1159 Common Subsequence:LCS(最长公共子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1159 题意: 求最长公共子序列. 题解: (LCS模板题) 表示状态: dp[i][j] = max ...
- HDU 4512 最长公共上升子序列
各种序列复习: (1)最长上升子序列. 1.这个问题用动态规划就很好解决了,设dp[i]是以第i个数字结尾的上升子序列的最长长度.那么方程可以是dp[i]=max(dp[j]+1).(j<i). ...
- HDU 1513 Palindrome(最长公共子序列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1513 解题报告:给定一个长度为n的字符串,在这个字符串中插入最少的字符使得这个字符串成为回文串,求这个 ...
随机推荐
- 类 Array Arraylist List Hashtable Dictionary
总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashT ...
- 使用Xcode插件,让iOS开发更加便捷
在iOS开发过程中,写注释是一项必不可少的工作.这不仅有助于自己对代码整理回顾,而且提高了代码的可读性,让代码维护变得容易.但是,写注释又是一项枯燥的工作.我们浪费了大量的时间在输入/*,*,*/这样 ...
- Objective-C总Runtime的那点事儿(一)消息机制【转】
RunTime简称运行时.就是系统在运行的时候的一些机制,其中最主要的是消息机制.对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 ).编译完成之后直接顺序执行,无任何 ...
- iOS_ruby环境的配置
AC机中安装RUBY环境 转自:http://www.cnblogs.com/foxting/p/4520829.html 在安装CocoaPods之前要先配置好RUBY环境,本文就怎么安装RUBY ...
- 微信小程序开发之 下拉刷新,上拉加载更多
本文记载了如何在微信小程序里面实现下拉刷新,上拉加载更多 先开看一下界面 大致如此的界面吧. 这个Demo使用了微信的几个Api和事件,我先列出来. 1.wx.request (获取远程服务器的数据, ...
- Asp.net GridView 72般绝技
快速预览:GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠 ...
- js控制 点一下增加一个输入框,点一下增加一个输入框……
<div> <div> 附件1:<input type="file" id="file1" name="file1&qu ...
- js 强制转换
强制转换为布尔类型: <script> var text =Boolean(0) //=>以下转换的类型都为false text = Boolean(0.0) text = Bool ...
- php之利用递归写无限极分类
<?php //无限极分类 //parent 的值,是该栏目的父栏目的id 反之是 /*0 安徽 合肥 北京 海淀 中关村 上地 河北 石家庄 */ $area = array( array(' ...
- OpenGrok的安装
http://opengrok.github.io/OpenGrok/ Ubuntu环境下OpenGrok的安装及使用 http://www.linuxidc.com/Linux/2013-05/84 ...