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. IOS- 最简单的反向传值- block

    block 常用于反向传值 声明 返回值类型 (^block)(参数列表) 调用 闭包的名字=^(参数列表){}: 闭包的名字(): 如: void(^aaaaa)(int num,NSString ...

  2. JavaScript基础-对象<1>

    1.JavaScript内部对象属性和方法 (1)内置String对象 String 对象是JavaScript的核心对象之一. 创建一个sting对象: var a="this defin ...

  3. 一个简单的Inno Setup例子

    ; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! [Setup] ; 注: AppId的值为单独标识该应用程序. ; 不要为其 ...

  4. 基本上,把switch,用设计模式代替,肯定是bug和过度设计。想想,本来修改一个文件几行代码可以解决的问题,变成修改3-6个类才能实现一样的功能。不是傻是什么?

    那些迷信设计模式的人,来修改一下这个方法吧.看看你最终的代码膨胀为几倍... public virtual PasswordChangeResult ChangePassword(ChangePass ...

  5. linux内核启动参数

    Linux内核启动参数   Console Options                         参数 说明 选项 内核配置/文件   console=Options 用于说明输出设备 tt ...

  6. js实现克隆一个对象

    var app={}; app.cloneobj= function(obj){ var o; if(typeof obj == "object"){ if(obj===null) ...

  7. csdn博客刷点击率代码

    此文为转载,亲测有效. import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; impo ...

  8. input效果:当鼠标在input中输入文字是改变内部文字效果

    主要用到属性:onpropertychange事件(属性改变时触发的事件),oninput属性(当input有输入时发生的事件) onpropertychange事件是IE专属事件 oninput属性 ...

  9. 如何去掉 Discuz标题后缀power by discuz

    如何去掉 Discuz标题后缀power by discuz 打开如下文件 template/default/common/header_common.htm/php 找到如下代码 $navtitle ...

  10. 推荐:PHPCMS v9 安全防范教程!

    一.目录权限设置很重要:可以有效防范黑客上传木马文件. 如果通过 chmod 644 * -R 的话,php文件就没有权限访问了. 如果通过chmod 755 * -R 的话,php文件的权限就高了. ...