求个LCS, 只是有了限制, 多加一维表示匹配到z串的第几个, 然后用滚动数组

----------------------------------------------------------------------------

#include<cstdio>
#include<cstring>
#include<algorithm>
 
using namespace std;
 
#define x(i) x[i - 1]
#define y(i) y[i - 1]
#define z(i) z[i - 1]
 
const int maxn = 509;
 
char x[maxn], y[maxn], z[maxn];
int dp[2][maxn][maxn], xn, yn, zn;
 
int main() {
scanf("%s%s%s", x, y, z);
xn = strlen(x); yn = strlen(y); zn = strlen(z);
memset(dp, 0, sizeof dp);
int c = 0, p = 1;
for(int i = 1; i <= xn; i++) {
swap(c, p);
memset(dp[c], 0, sizeof dp[c]);
for(int j = 1; j <= yn; j++)
for(int k = 0; k <= zn; k++) {
dp[c][j][k] = max(max(dp[p][j][k], dp[c][j - 1][k]), dp[c][j][k]);
if(x(i) == y(j) && (k == 0 || dp[p][j - 1][k])) {
if(x(i) == z[k])
dp[c][j][k + 1] = max(dp[c][j][k + 1], dp[p][j - 1][k] + 1);
else
dp[c][j][k] = max(dp[c][j][k], dp[p][j - 1][k] + 1);
}
}
}
if(dp[c][yn][zn])
printf("%d\n", dp[c][yn][zn]);
else
puts("NO SOLUTION");
return 0;
}

----------------------------------------------------------------------------

3304: [Shoi2005]带限制的最长公共子序列

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 307  Solved: 137
[Submit][Status][Discuss]

Description

Input

输入共三行,每行为长度不超过500的,小写字母组成的非空字符串
按顺序分别表示x,y,z

Output

如存在满足条件的N,输出W的长度,否则输出 NO SOLUTION

Sample Input

helloworld
hellxebore
xr

Sample Output

5

HINT

w=hxeor

本题要求找出的W首先是X与Y的公共子序列并且包含Z,然后才是满足这些条件的

字符串里面找最长的。

Source

最新文章

  1. u-boot-2015.04 在tq2440上的移植(使用spl引导u-boot)
  2. 浅谈JDBC访问MySQL数据库
  3. SQL Server 获取最后一天(指定时间的月最后一天日期)
  4. 在c#中使用bitblt显示图片
  5. Linux挂载磁盘
  6. Java垃圾回收器
  7. 《APUE》第五章练习1
  8. ruby quiz The Solitaire Cipher
  9. UVA 10201 Adventures in Moving - Part IV(dp)
  10. Android多线程.断点续传下载
  11. 微通道产品经理Grover采访:美国的微通道设计
  12. queue,指针求最短路的区别
  13. UITextField关闭自动联想功能
  14. C/C++生成随机数
  15. Spring揭秘读书笔记 八 数据访问异常体系
  16. springboot-mybatis多数据源以及踩坑之旅
  17. Git基础(一) 创建项目仓库
  18. 分布式存储MooseFS
  19. PHP,PSR开发规范
  20. java利用泛型实现不同类型可变参数

热门文章

  1. HDU 4464 Browsing History(最大ASCII的和)
  2. nhibernate 更新 SqlDateTime 溢出问题
  3. 本地yum源安装GCC
  4. 关于js封装框架类库之DOM操作模块(二)
  5. CSS小tip整理
  6. 汉字转拼音的vc++程序源代码
  7. HTML,JAVASCRIPT代码美化demo
  8. Jsp指令有那些?
  9. Insert into a Cyclic Sorted List
  10. POJ 3630 Phone List(trie树的简单应用)