Zipper

Poj

输入

输入测试次数n;
每一次测试,分别输入string a,b和all;

输出

如果,a,b串,在 all中可以按顺序找到,就输出"yes"
否则就输出"no"

例如

cat  tree  tcraete  这个是要输出 yes的
111 000  101001 这个也是要输出yes的
111 000   111100 这个是要输出no的
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#include <string>string a, b, all;
bool Arr[1000][1000]; //Arr[i][j]表示 以 a[i]和b[j]结束的串在不在其中  在 = true,或者 不在 = false ;int find(char c, int no = -1) //no表示不是坐标no
{for (int i = 0; i < all.length(); ++i){if (all[i] == c && i != no)return i;}return -1;
}
void oper()
{int pp1 = find(a[0]);int pp2 = find(b[0], pp1); //得到在pp2 != pp1的前提下找到了b[0]的开头,还是从前面找if (pp2 == -1){ //通过这种方式的寻找,确保了,最后一个元素在两者中都存在cout << "no" << endl;return;} //这是一种可能,在这种可能之下Arr[0][0] = true;if (pp1 > pp2){for (int i = pp2 + 1; i < pp1; ++i){if (b[i] != all[i]){cout << "no" << endl;return;}Arr[0][i] = true;}}else{for (int i = pp1 + 1; i < pp2; ++i){if (a[i] != all[i]){cout << "no" << endl;return;}Arr[i][0] = true;}} //要明白一点,两个开头的位置之间的字符必定是属于前面那个字符所对应的字符串的//至此,就开始遍历所有的起始位置 ,两个位置都划归到了同一位置//进行斜着的填表过程,每一斜行,都有,横纵坐标相加都是相等的,就是说,考虑的都是对于all来说,都是前面的//cat tree tcraeteint p = max(pp1, pp2) + 1; //用 p来表示需要处理的all 的第p个元素(从0开始计数),其实很明显可以看到//目前,指定到了准确的位置while (p < all.length()){ //p表示第p个元素,就是表示第p斜行for (int i = 0; i <= p; ++i){ //对于这个第p个元素,只有三种可能,第一,这个属于a[i],第二,这个属于b[j],第三个,都不属于,则返回;bool aB = false, bB = false;if (i >= 1){if (a[i] == all[p])aB = Arr[i - 1][p - i - 1];}if (p - i - 1 >= 1){if (b[p - i - 1] == all[p])bB = Arr[i][p - i - 2];}Arr[i][p - i - 1] = aB || bB;}++p;}if (Arr[a.length() - 1][b.length() - 1])cout << "yes" << endl;elsecout << "no" << endl;return;
}int main()
{int n, caseNo = 0;cin >> n;while (n--){cin >> a >> b >> all;cout << "Data set " << ++caseNo << ": ";if (a.length() + b.length() != all.length()){cout << "no" << endl;continue;}memset(Arr, false, sizeof(Arr));oper();}
}

[POJ]Zipper[动态规划]相关推荐

  1. 目的地返回POJ 2336 动态规划(DP) Ferry Loading II

    在写这篇文章之前,xxx已写过了几篇关于改目的地返回主题的文章,想要了解的朋友可以去翻一下之前的文章 标题链接:http://poj.org/problem?id=2336 分析:想设我们要求的是第i ...

  2. |POJ 2342|动态规划|Anniversary party

    http://poj.org/problem?id=2342 树形DP基础题,具体看注释. 设状态f[i][0]为i不来,f[i][1]为i要来 f[r][1] +=  f[i][0];   //r要 ...

  3. poj 1260 动态规划

    题意:给出几类珍珠,以及它们的单价,要求用最少的钱就可以买到相同数量的,相同(或更高)质量的珍珠. 规定买任一类的珍珠n个(价格为p),都要支付(n+10)*p的钱,即额外支付10*p,输入的价格递增 ...

  4. Blocks(poj 1390) 动态规划 方盒游戏 (升维——三维)

    Blocks  点击转到 Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 6197   Accepted: 2557 Desc ...

  5. 蓝桥杯刷题日记 更新到2022/2/5

    蓝桥杯刷题日记 文章目录 蓝桥杯刷题日记 DAY1 1.递归实现指数型枚举 2.递归实现组合型枚举 3.递归实现排列型枚举 Day2 1.八皇后问题 *2.费解的开关 3.带分数 Day3 1.飞行员 ...

  6. ACM比赛经验、刷题记录及模板库总结(更新中)

    前言 本文所提及的部分题目代码,可以在我的Github上找到 第一部分 经验分享及感受 第二部分 刷题记录 一.基础算法&程序语言 //strlen()函数的复杂度是O(n)要小心 //截取字 ...

  7. 挑战程序设计竞赛(第二章习题总结)

    文章目录 搜索 Curling 2.0(POJ 3009) Meteor Shower(POJ 3669) Smallest Difference(POJ 2718) Hopscotch(POJ 30 ...

  8. 动态规划训练23 [Making the Grade POJ - 3666 ]

    Making the Grade POJ - 3666 这道题目有点意思. 我们定义dp[i][j]表示的含义是把包含前i个元素的子序列变成非递减的子序列,并且最后一个元素变成j所需要耗费的最小代价 ...

  9. 动态规划训练19、最短路 [Help Jimmy POJ - 1661 ]

    Help Jimmy POJ - 1661 题意:大致是一个人从某个点开始下落,下落的速度是1m/s,然后在平台上的时候可以左右移动,移动的速度也是1m/s,但是这里有一个限制,就是说每次下落的距离不 ...

最新文章

  1. java动态代理_Java代理模式及动态代理详解
  2. Objective C 链式调用 1
  3. 发一个sgs0.9.9的例子
  4. opencv java match_OpenCV模板匹配函数matchTemplate详解
  5. 360度旋转图片小特效
  6. SAP CRM WebClient UI的搜索条件是怎么渲染出来的
  7. OpenGL_17_点光源
  8. AUTOSAR从入门到精通100讲(九)-汽车Tbox
  9. 【TypeScript系列教程01】入门介绍
  10. mysql 快速导出_mysql 快速导入导出
  11. SolarWinds 攻击者再次发动供应链攻击
  12. 20169212《Linux内核原理及分析》第十二周作业
  13. 1694件AI事件大盘点!2020年12月,哪些让你记忆深刻
  14. c语言符号意思大全,c语言符号意思
  15. 随书赠送的股票量化分析工具—出升级版啦!功能抢先看
  16. 通过OPENSSL建立证书以及CSR证书签名过程
  17. [BUUCTF]PWN——[BJDCTF 2nd]snake_dyn
  18. adb的升级与版本更新
  19. 网站地图是什么?该如何生成
  20. 街舞中的rolling机器人_这,就是街舞中的那些“Swag”十足的舞蹈类型,你了解吗?...

热门文章

  1. zkaccess未知错误98_游戏开始就出现这个未知错误,怎么回事,求救
  2. jQuery实现enter键登录
  3. 深入浅出浏览器渲染原理
  4. vue-cli安装、node-sass安装、mintUI组件库安装
  5. CDH5之Unexpected error.Unable to verify database connection
  6. 年薪50万美金的工程师到底牛在哪里?
  7. 详解/etc/fstab文件内容
  8. 离线轻量级大数据平台Spark之MLib机器学习库朴素贝叶斯实例
  9. Ubuntu下GCC引用mysql头文件和库文件
  10. application.yml如何显示成小叶子图标