初看这道题,以为是先用SA和SC求LCS,再从SC中把SA剔除,看剩下来的是不是SB(……)

显然不对;因为SC与SA的公共子串不止一种,判断不一定正确。

于是考虑SC中每一个字符,如果能够匹配,那么不是SA中的就是SB中的;

定义bool s[i,j]为SA前i个,SB前j个能否组成SC前i+j个;

所以s[i,j]=true (s[i-1,j] and SA[i]=s[i+j]) or (s[i,j-1] and SB[j]=s[i+j]);

则最后能匹配的条件为s[length(SA),length(SB)]=true

 var f:array[..,..] of boolean;
ff:array[..] of boolean;
xx,s1,s2,s3:ansistring;
l1,l2,l3,k,i,j,p,n,x,y:integer;
check:boolean;
function max(a,b:integer):integer;
begin
if a>b then max:=a else max:=b;
end; begin
readln(n);
for k:= to n do
begin
readln(xx);
xx:=xx+' ';
p:=pos(' ',xx);
s1:=copy(xx,,p-);
xx:=copy(xx,p+,length(xx));
p:=pos(' ',xx);
s2:=copy(xx,,p-);
xx:=copy(xx,p+,length(xx));
p:=pos(' ',xx);
s3:=copy(xx,,p-);
fillchar(f,sizeof(f),false);
l1:=length(s1);
l2:=length(s2);
l3:=length(s3);
f[,]:=true;
if s1[]=s3[] then f[,]:=true;
if s2[]=s3[] then f[,]:=true;
for i:= to l1 do
for j:= to l2 do
begin
if (s1[i]=s3[i+j]) and f[i-,j] then f[i,j]:=true;
if (s2[j]=s3[i+j]) and f[i,j-] then f[i,j]:=true;
end;
if f[l1,l2] then writeln('Data set ',k,': yes')
else writeln('Data set ',k,': no');
end;
end.

poj2192的更多相关文章

  1. poj2192(搜索)

    这个题目对于两个字符串A,B是否可以通过规则生成C. import java.util.Scanner; public class Main { public static void main(Str ...

  2. POJ2192 - Zipper(区间DP)

    题目大意 给定三个字符串s1,s2,s3,判断由s1和s2的字符能否组成字符串s3,并且要求组合后的字符串必须是s1,s2中原来的顺序. 题解 用dp[i][j]表示s1的前i个字符和s2的前j个字符 ...

  3. Zipper(poj2192)dfs+剪枝

    Zipper Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15277   Accepted: 5393 Descripti ...

  4. 类似LCS,构成目标单词(POJ2192)

    题目链接:http://poj.org/problem?id=2192 解题报告: 1.类似最长公共子序列,dp[i][j]表示用s1前i个字符和s2前j个字符来构成目标单词的一部分,是否成功 2.状 ...

  5. poj练习题的方法

    poj1010--邮票问题 DFSpoj1011--Sticks dfs + 剪枝poj1020--拼蛋糕poj1054--The Troublesome Frogpoj1062--昂贵的聘礼poj1 ...

  6. Combine String---hdu5727 &&& Zipper(LCS变形)

    题目链接:http://poj.org/problem?id=2192 http://acm.split.hdu.edu.cn/showproblem.php?pid=5707 http://acm. ...

  7. DP总结 ——QPH

    常见优化 单调队列 形式 dp[i]=min{f(k)} dp[i]=max{f(k)} 要求 f(k)是关于k的函数 k的范围和i有关 转移方法 维护一个单调递增(减)的队列,可以在两头弹出元素,一 ...

  8. OJ题目分类

    POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 P ...

  9. poj分类解题报告索引

    图论 图论解题报告索引 DFS poj1321 - 棋盘问题 poj1416 - Shredding Company poj2676 - Sudoku poj2488 - A Knight's Jou ...

随机推荐

  1. js替换字符串的所有示例代码

    js如何替换字符串中所有. /** * 替换字符串中所有 * @param obj 原字符串 * @param str1 替换规则 * @param str2 替换成什么 * @return 替换后的 ...

  2. phpcms v9 自定义分页 带下拉跳转

    <?php function new_pages($num, $curr_page, $perpage = 20, $urlrule = '', $array = array(),$setpag ...

  3. 【WS-Federation】到底有多少公司在用WS-Federation

    到底有多少公司在用WS-Federation? sso先调用一个登录接口 获取一个token 然后再调用各种业务接口 如果是ssl token 直接暴露就行了 没有ssl 最好每次取一个token, ...

  4. XSS前端防火墙

    前一段时间,在EtherDream大神的博客里看到关于XSS防火墙的一系列文章,觉得很有意思.刚好科创要做一个防火墙,就把XSS前端防火墙作为一个创新点,着手去实现了. 在实现过程中,由于各种原因,比 ...

  5. 如何在Linux下重命名多个文件

    在Linux中,当你想要改变一个文件名,使用mv命令就好了.然而mv不能使用通配符重命名多个文件.可以用sed.awk或者与xargs结合使用来处理多个文件的情况.然而,这些命令行即繁琐又不友好,并且 ...

  6. 多智能体仿真环境 NetLogo

    http://ccl.northwestern.edu/netlogo/ 创建agentcreate-turtles 10 动一动ask turtle 0 [forward 10 right 90 l ...

  7. 使用eclipse生成文档(javadoc)

    使用eclipse生成文档(javadoc)主要有三种方法:1,在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步.在Java ...

  8. 3.6 spring-construction-arg 子元素的使用与解析

    对于构造函数子元素是非常常用的. 相信大家也一定不陌生, 举个小例子: public class Animal { public String type; public int age; /** * ...

  9. hibernate简介(Session,几种状态,方法······等)

    1.Hibernate是什么?          Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数 ...

  10. The 5th Zhejiang Provincial Collegiate Programming Contest---ProblemE:Easy Task

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2969 全场第一水题.我不知道怎么解释,看代码就好了... #include ...