http://acm.hdu.edu.cn/showproblem.php?pid=4681

枚举A串和B串包含C串的区间  枚举区间端点算左右两端最长公共子序

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define N 1010
char s1[N],s2[N],s3[N];
int dp1[N][N],dp2[N][N];
struct node
{
int l,r;
}p1[N],p2[N];
int main()
{
int i,j,t,k1,k2,k3,kk=;
scanf("%d",&t);
while(t--)
{
kk++;
memset(dp1,,sizeof(dp1));
memset(dp2,,sizeof(dp2));
scanf("%s%s%s",s1,s2,s3);
k1 = strlen(s1);
k2 = strlen(s2);
k3 = strlen(s3);
for(i = ; i <= k1 ; i++)
for(j = ; j <= k2 ;j++)
{
if(s1[i-]==s2[j-])
dp1[i][j] = dp1[i-][j-]+;
else
dp1[i][j] = max(dp1[i-][j],dp1[i][j-]);
}
for(i = k1 ; i>= ; i--)
for(j = k2 ; j >= ; j--)
{
if(s1[i-]==s2[j-])
dp2[i][j] = dp2[i+][j+]+;
else
dp2[i][j] = max(dp2[i+][j],dp2[i][j+]);
}
int g = ;j=;
for(i = ; i < k1 ; i++)
if(s1[i]==s3[j])
{
j++;int a=i;
if(j<k3)
{
for(a = i+ ; a < k1 ; a++)
{
if(s1[a]==s3[j])
j++;
if(j==k3)
break;
}
}
if(j==k3)
{
g++;
p1[g].l = i;
p1[g].r = a+;
}
j = ;
}
int o=;j=;
for(i = ; i < k2 ; i++)
if(s2[i]==s3[j])
{
j++;int a=i;
if(j<k3)
{
for(a = i+ ; a < k2 ; a++)
{
if(s2[a]==s3[j])
j++;
if(j==k3)
break;
}
}
if(j==k3)
{
o++;
p2[o].l = i;
p2[o].r = a+;
}
j = ;
}
int maxz=;
for(i = ; i <= g ; i++)
for(j = ; j <= o ; j++)
{
int x = dp1[p1[i].l][p2[j].l],x2 = dp2[p1[i].r+][p2[j].r+];
maxz = max(maxz,x+x2);
}
printf("Case #%d: %d\n",kk,maxz+k3);
}
return ;
}

hdu4681String的更多相关文章

随机推荐

  1. Markdown編輯器

    MarkDown编辑器 一.什么是Markdown编辑器 二.怎么使用Markdown编辑器 1.标题/Head 2.超链接/Link/Reference ②自動的郵件連結也很類似,只是Markdow ...

  2. 306573704 Char型和string型字符串比较整理(转)

    1.赋值 char赋值: char ch1[] = "give me"; char ch2[] = "a cup"; strcpy(ch1,ch2); cout ...

  3. POJ 1088 滑雪 -- 动态规划

    题目地址:http://poj.org/problem?id=1088 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当 ...

  4. JS的词法作用域

    词法作用域定义实现的规则: 1 函数作用域实在定义的时候决定的,而不是在执行时候决定 2 为了实现这种词法作用域,函数内部不仅包含函数代码逻辑,还必须引用当前的作用域链. 3 函数对象可以通过作用域链 ...

  5. 如何配置SSH Keys登录

    SSH Keys简介: 使用SSH Keys的登录远程虚拟云主机的方式比单独使用密码登录更加安全,简单的密码很可能被暴力破解.而目前来看采用长度大于1024位的RSA加密算法,几乎是不可能被破解的.S ...

  6. python 生成排列、组合以及选择

    from <python cookbook> 19.15 任务 需要对一个序列的排列(permutation).组合(combination)或选择(selection)进行迭代操作.即使 ...

  7. chrome常用插件

    1. ModHeader 功能:修改请求头部信息 安装地址:https://chrome.google.com/webstore/detail/idgpnmonknjnojddfkpgkljpfnnf ...

  8. 【gradle】 入门

    robin@robin-PC2 /D/JavaWorkSpace/payment/alipay-wap (master)$ ./gradlew idea

  9. MVC-Html.ActionLink的几种写法

    Html.ActionLink("linkText","actionName") Html.ActionLink("linkText",&q ...

  10. ios更改UITabBarController背景以及选中背景图片的方法

    一.背景图片  1.5.0以上版本     UIImage *image = [UIImage imageNamed:@"system_tabbar_bg.png"];     [ ...